HTTP POST到WCF服务

时间:2010-11-21 20:57:14

标签: wcf .net-3.5

允许HTTP POST到WCF服务需要做什么?

我想允许人们不仅将SOAP与此服务一起使用,而且还必须能够对此服务进行HTTP POST并理想地接收XML响应。

我找不到允许WCF服务接受HTTP POST的简单方法。

我已经过了HTTP 415错误,需要一些关于端点的web.config更改或方法(WebInvoke)上方的其他属性的帮助。

谢谢!

1 个答案:

答案 0 :(得分:4)

为了通过标准HTTP谓词与WCF服务进行通信,您需要使用WCF REST组件。

在.NET 3.5 SP1中,您需要的是WCF REST入门套件(它不是基本软件包的一部分)。

如果有了这个,你可以使用webHttpBinding在WCF服务中定义一个端点,基本上应该允许你定义GET,POST,PUT和DELETE操作。

查看WCF REST developer center,查看大量白皮书,教程,演练和截屏视频,了解如何完成所有这些操作。

简而言之,您可以使用WebGetWebInvoke属性和网址模板来装饰您希望通过HTTP REST公开的服务方法,例如:

[ServiceContract]
public partial class YourService
{
    [WebInvoke(Method = "POST", UriTemplate = "yourservice/{id}/save")]
    [OperationContract]
    SomeReturnType YourMethodCall(string someParam);
    ...
}

然后,在web.config(用于在IIS中托管)或在app.config中,您需要具有正确绑定的端点:

<endpoint name="webEndpoint"
          address="...."
          binding="webHttpBinding"
          contract="IYourServiceContract" />

您的配置中可能还需要一些额外的东西--WCF REST开发中心应该深入了解所有细节。