代码之家  ›  专栏  ›  技术社区  ›  stephenl

WCF 4路由服务-协议桥接问题

  •  1
  • stephenl  · 技术社区  · 14 年前

    我有以下的WCF协议桥接场景:使用basichttp绑定的WCF客户机与使用nettcp将请求转发到服务的路由服务进行对话。

    顾客 &; basicHttpBinding (SOAP 1.1) A&A & GT; 路由服务 A&A & GT; netTcpBinding (SOAP 1.2) A&A & GT; 服务

    路由功能工作得很好,直到我们将服务暴露给使用GSOAP库向服务传递消息的C++客户端。如果C++客户端直接与服务通信,则调用成功;然而,一旦它试图通过路由服务进行通信,它就失败了。

    服务接收路由消息,但在尝试反序列化消息时立即抛出异常。从服务返回的错误消息是 System.ServiceModel.Dispatcher.NetDispatcherFaultException "The formatter threw an exception while trying to deserialize the message…"

    问题似乎是由协议桥接引起的。如果我不使用协议桥接,即在整个调用链中使用BaseCHTTP,C++客户端(和消息路由)按照预期工作。

    我不知道如何解决这个问题。我知道路由服务被设计成WCF到WCF中介,但是这个问题似乎只限于来自C++ GSOAP客户端的调用。我已经尝试使用一些Web服务测试工具(soapui、soapsonar)来查看是否可以复制这个问题,但是它们似乎工作得很好。 如有任何帮助或指导,我们将不胜感激。

    当做, 史蒂夫

    2 回复  |  直到 14 年前
        1
  •  2
  •   stephenl    14 年前

    在与Microsoft联系并在其帮助下 Yaron Naveh ,结果是这是一个 未经证实的 WCF路由服务中的错误。有关问题发生的原因的详细信息,Yaron有一篇很好的博客文章,详细描述了这个问题。

    http://webservices20.blogspot.com/2011/01/gsoap-and-wcf-routing-services-are-not.html

    感谢所有帮助澄清这个问题的人!

    当做,

    史蒂夫

    更新(2011年3月4日): Microsoft已对此问题发布了修复程序。 http://connect.microsoft.com/VisualStudio/feedback/details/640260/wcf-routing-services-creates-wrong-message-when-protocol-bridging-is-used

        2
  •  0
  •   Bob Slaski    14 年前

    当使用具有不同传入和传出绑定的任何rpc编码的SOAP消息时,也会发生此问题。与类型定义关联的命名空间引用在转换中丢失。我们创建了一个服务行为扩展,该扩展手动添加了名称空间引用。这并不理想,但我们无法更改绑定。我们已经非正式地向微软报告了这个问题。

    祝你好运