如何将WCF服务从SOAP转换为REST?

时间:2016-04-26 05:07:35

标签: c# wcf rest soap

我对WCF很新,我对它有疑问。

在浏览了一些文章之后,我发现在web.config文件中,如果我将基线绑定从basicHttpBinding更改为webHttpBinding,而httpGetEnabled从true更改为false则使用REST。

我的问题是,这些只是我需要改变以制作服务SOAP或REST的两件事吗?或者我是否需要更改/添加任何其他内容?

1 个答案:

答案 0 :(得分:5)

您可以在两个不同的端点中公开该服务。 @@可以使用支持SOAP的绑定,例如SOAPbasicHttpBinding富人可以使用REST。我假设您的webHttpBinding服务将在REST,在这种情况下,您需要使用以下行为配置配置两个端点

JSON

您的方案中的端点配置示例是

<endpointBehaviors>
  <behavior name="jsonBehavior">
    <enableWebScript/>
  </behavior>
</endpointBehaviors>

<services> <service name="TestService"> <endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/> <endpoint address="json" binding="webHttpBinding" behaviorConfiguration="jsonBehavior" contract="ITestService"/> </service> </services> 应用于操作合同以使其成为RESTful。 e.g。

[WebGet]

添加服务引用后的SOAP服务的SOAP请求客户端端点配置

public interface ITestService
{
   [OperationContract]
   [WebGet]
   string HelloWorld(string text)
}

在C#中

<client>
    <endpoint address="http://www.example.com/soap" binding="basicHttpBinding"
      contract="ITestService" name="BasicHttpBinding_ITestService" />
  </client>