Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制Soap/WCF使用HTTP而不是TCP协议_Http_Wcf_Soap_Tcp_Wireshark - Fatal编程技术网

强制Soap/WCF使用HTTP而不是TCP协议

强制Soap/WCF使用HTTP而不是TCP协议,http,wcf,soap,tcp,wireshark,Http,Wcf,Soap,Tcp,Wireshark,我有一个客户端使用2个Web/WCF服务,都是SOAP类型。让我们把它们称为ServiceA和ServiceB。 ServiceA工作正常,但ServiceB不太正常:我收到一条错误消息,指出Response消息中的CData(文本数据)在从ServiceB接收响应时在XML解析器/反序列化器中造成失败。(我怀疑CData可能包含来自ServiceB的错误消息) 现在,我安装了WireShark来调查发送和接收的原始数据。 Wireshark提供了关于工作服务A连接的非常好的信息:数据是使用HT

我有一个客户端使用2个Web/WCF服务,都是SOAP类型。让我们把它们称为ServiceA和ServiceB。 ServiceA工作正常,但ServiceB不太正常:我收到一条错误消息,指出Response消息中的CData(文本数据)在从ServiceB接收响应时在XML解析器/反序列化器中造成失败。(我怀疑CData可能包含来自ServiceB的错误消息)

现在,我安装了WireShark来调查发送和接收的原始数据。 Wireshark提供了关于工作服务A连接的非常好的信息:数据是使用HTTP协议传输的(顶部是TLS 1.2以确保安全),我对请求和响应都看得很清楚

但是,对于与其他ServiceB的麻烦连接,所有连接都使用TCP,而不是HTTP。TCP消息的消息内容在WireShark中不可读

  • 第一:为什么对ServiceB使用TCP而不是HTTP??(在我的客户机代码中,绑定和端点都非常相似,都使用“basicHttpsBinding”)
  • 是否可以强制ServiceB SOAP消息通过HTTP而不是TCP,从而使WireShark输出可读

  • 非常感谢您的评论。

    对于阅读上述帖子的读者:

    事实证明,在我的客户机和ServiceB之间有一个中间代理。 似乎这个代理(对我来说,出乎意料地)执行了XML反序列化。如果代理尝试从ServerB反序列化异常,代理将抛出一个讨厌的“Can not de serialized CData”,并将其传递给客户端。导致客户(我)非常困惑


    (是的,教训是没有服务必须抛出异常。必须捕获、处理所有异常,并且必须将预定义字段中的受控错误提供给调用者)。

    BasicHttpsBinding使用http进行传输。如果可能,您可以提供一些配置信息吗?