我有以下 WCF 协议桥接方案:使用 basicHttp 绑定的 WCF 客户端与使用 netTcp 将请求转发到服务的路由服务通信。
客户端<-> basicHttpBinding (SOAP 1.1)
<–>路由器服务 <–> netTcpBinding (SOAP 1.2)
<–>服务
路由功能完美运行,直到我们将服务公开给使用 gSOAP 库将消息传递给服务的 C++ 客户端。如果C++客户端直接与Service通信,则调用成功;但是,一旦它尝试通过路由服务进行通信,它就会失败。
服务接收路由消息,但在尝试反序列化消息时立即引发异常。从服务返回的错误消息是一个System.ServiceModel.Dispatcher.NetDispatcherFaultException
说法"The formatter threw an exception while trying to deserialize the message…"
该问题似乎是由协议桥接引起的。如果我不使用协议桥接,即我在整个调用链中使用 basicHttp,C++ 客户端(和消息路由)将按预期工作。
我无法弄清楚如何解决这个问题。我了解路由服务被设计为 WCF 到 WCF 中介,但该问题似乎仅与源自 C++ gSOAP 客户端的调用有关。我尝试使用一些 Web 服务测试工具(soapUI、soapSonar)来查看是否可以复制该问题,但它们似乎工作正常。任何帮助或指导将不胜感激。
问候,史蒂夫