使用WCF支持"application/x-www-form-urlencoded"发布数据的最佳方式?

Eri*_*ver 8 rest wcf post web-services http

我正在构建基于W3C规范的WCF服务,该规范定义了一个接受"application/x-www-form-urlencoded"发布数据的RESTful Web服务端点.默认情况下,WCF不支持这种类型的消息编码,我发现了许多创建合同的不同示例,如下所示:

XElement Query_Post(Stream postData);
Run Code Online (Sandbox Code Playgroud)

然后在实现中postData使用该HttpUtility.ParseQueryString方法解码流.

有没有人知道在WCF中支持"application/x-www-form-urlencoded"的更强类型的方式?

我希望我的运营合同是:

XElement Query_Post(string query, string [] params);
Run Code Online (Sandbox Code Playgroud)

Eug*_*ota 7

最好的办法是使用Stream原始HTTP POST与WCF和你说的话.原因是因为WCF从服务代码中抽象出所有通信级物理布局.理想情况下,您只想通过翻转开关来创建可以变成SOAP或REST的服务.

要本机支持它,您可能必须扩展WebHttpBinding或制作自己的绑定并实现自定义编码器.这与输出对称,就像链接的帖子所说的那样.你必须扭转它的武器,让WCF输出非XML/JSON的东西.