c# - gSOAP 客户端的 WCF 服务

标签 c# .net wcf soap gsoap

我收到了构建服务来处理来自预先设计的客户端的流量的请求。

文档指出该服务是 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 示例中找到的解决方案。

样本位于:

Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4

确切示例(基于示例安装的文件夹)

Extensibility\Interop\AdvancedDispatchByBody

关于c# - gSOAP 客户端的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122738/

相关文章:

c# - Autofac 解决 CQRS CommandDispatcher 中的依赖关系

c# - 从 EF 6.0 Beta 升级到 RC 后出现 System.MissingMethodException

c# - 在不使用无限循环的情况下连续扫描内存中的值

.net - 如何为 ADO.NET 拆分 Oracle sql 语句

java - 移动开发——Mono、Java w/J2ObjC 还是原生?

c# - 查找字符串中的第一个字母字符

c# - 在运行时动态更新 TabControl 内容

c# - 对 WCF 客户端进行单元测试

WCF 安全 - 防止中间人攻击

wcf - wcf 中的 Entity Framework DbContext 每次调用实例模式