wcf - WCF REST 错误中的 SOAP header

标签 wcf wcf-rest

我有那个错误:

Operation 'GetFields' in contract 'IService' uses a MessageContract that has SOAP headers. SOAP headers are not supported by the None MessageVersion.



问题是我的操作被两个端点使用:CustomEndpoint with messageVersion="Soap12WSAddressing10"
和第二个 webHttpBehavior。

我认为这个错误引发了 Rest 有 MessageVersion.None 的问题

有什么办法解决吗?

最佳答案

不幸的是,在 WCF 中,RESTfulness 往往是一个合约级别的特性。这意味着您通常不能在非 RESTful 上下文中使用 RESTful 契约(Contract),反之亦然。

您在这里有两种选择,每种都有自己的权衡。首先,您可以拥有两个单独的契约(一个标记为 RESTful 功能,一个标记为“普通”、非 RESTful 的契约),它们都由您的 WCF 服务实现。这要求两个合约具有相同的方法签名,这可能并不总是可行的。

第二种选择是拥有两个单独的 WCF 服务,每个服务都有自己的契约和处理代码,但让它们都将操作调用卸载到他们都知道的第三个类,该类执行实际工作。这是最灵活的解决方案,但往往需要在任一(或两者)WCF 服务中使用特殊的转换代码才能调用第三类。

关于wcf - WCF REST 错误中的 SOAP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983110/

相关文章:

WCF:如何将可变数量的参数传递给启用 WebGet 的服务

c# - WCF服务的线程安全处置

c# - 使服务返回大量数据

json - 如何发送 DataContract 对象作为 WCF RESTFUL web 服务的参数?

wcf - 用于测试 WCF Rest 服务的测试客户端还是仅使用浏览器?

c# - 对 protobuf-net WCF 的使用感到困惑

.net - 远程使用 net.pipe 绑定(bind)的 WCF 问题

c# - ServiceHost 只支持类服务类型

c# - 从 WCF 服务返回的 JSON 数据包含转义字符

c# - WCF 底层连接关闭 : An unexpected error occurred on a receive