【问题标题】:Converting WCF SOAP Service Library to REST Service library for MVC将 WCF SOAP 服务库转换为 MVC 的 REST 服务库
【发布时间】:2014-06-03 11:44:54
【问题描述】:

问题陈述:

我们使用 WCF 服务库构建了 MVC 4 应用程序(不是带有 svc 文件的 WCF 服务应用程序)。我们通过 WCF SOAP 服务库执行的所有 MVC CRUD 操作。一切正常。现在客户端突然更改了要求并要求我们将 WCF SOAP 转换为 REST。

我浏览了许多将 WCF SOAP 转换为 REST 的 URL。在所有 URL 中,他们提到了将 WCF SOAP 服务应用程序转换为 WCF REST 而不是 WCF SOAP 服务库转换为 WCF REST。

我的问题是我们可以将 SOAP 中的 WCF 服务库转换为 REST 吗??WCF 服务库和 WCF 服务应用程序的转换是否相同??如果可能的话,在改变现有的代码??

如果有人能提出在 MVC 中将 WCF SOAP 转换为 REST 的更好方法,并附上一些 URL 和解释,那就太好了。

【问题讨论】:

    标签: wcf asp.net-mvc-4 rest soap


    【解决方案1】:

    不确定它是否有帮助,但我已经完成了同时暴露给 Soap 和 REST 的 WCF 库。 REST 公开 XML/JSON,返回类型取决于输入请求。 它可以通过配置文件进行配置,我的看起来像这样:

    <behaviors>
      <serviceBehaviors>
        <behavior name="BehaviourService">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="BehaviourEndPoint"></behavior>
          <behavior name="BehaviourWebHttp">
            <webHttp defaultBodyStyle="Wrapped" faultExceptionEnabled="True" automaticFormatSelectionEnabled="True"/>
          </behavior>
      </endpointBehaviors>
    
    </behaviors>
    <services>
      <service name="NameSpace.MyClass" behaviorConfiguration="BehaviourService" >
        <!--SoapUI-->
        <endpoint name="Name" address ="soap" binding="basicHttpBinding" contract="NameSpace.IMyClass"></endpoint>
        <!--Rest-->
        <endpoint name="Name" address="" binding="webHttpBinding" behaviorConfiguration="BehaviourWebHttp" contract="NameSpace.IMyClass" ></endpoint>
        <!--MEX-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:89/MyAddress"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    

    服务如下:

    [ServiceContract(Namespace = "http://www.mycompany.com", Name = "MyName")]
    [DataContractFormat]
    public interface IMyClass
    {
        [OperationContract]
        [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "MyMethod", Method = "POST")]
        bool MyMethod();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-19
      • 2019-08-15
      • 2013-05-30
      • 2010-09-16
      • 1970-01-01
      • 2013-01-09
      • 2013-01-24
      • 2013-02-04
      相关资源
      最近更新 更多