我有那个错误:
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/