我收到了构建服务来处理来自预先设计的客户端的流量的请求。
文档指出该服务是 SOAP 服务,但我后来发现预先设计的客户端使用的协议(protocol)是使用 SOAP 1.2 的 gSOAP
我遇到的问题是,当将 Binding 分配给 basicHttpBinding
时,我收到 Action '' not support
错误,因为客户端不发送 SOAPAction
header (因为 SOAP 1.2 中未使用它),如果我使用 wsHttpBinfing
设置 WCF 服务的绑定(bind),则会收到错误
HTTP/1.1 415
Cannot process the message because the content type 'text/xml; charset=utf-8'
was not the expected type 'application/soap+xml; charset=utf-8'.
所以基本上看来他们使用的 gSOAP 客户端发送 SOAP 1.2 的 SOAP 结构,但使用 SOAP 1.1 的 Content-Type
我的问题是如何让我的 WCF 服务处理来自客户端的请求。 (客户端不能以任何方式修改)
我尝试设置自定义绑定(bind)
<customBinding>
<binding name="myCustomBinding">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport/>
</binding>
</customBinding>
具有各种 messageVersion 值。但我还没有找到有效的组合。
最佳答案
通过创建自定义调度程序来映射基于 SOAPBody 的调用来解决。
在 Microsoft WCF 示例中找到的解决方案。
样本位于:
确切示例(基于示例安装的文件夹)
Extensibility\Interop\AdvancedDispatchByBody
关于c# - gSOAP 客户端的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122738/