【发布时间】:2020-12-18 23:07:31
【问题描述】:
我有一个客户端使用 2 个 Web/WCF 服务,它们都是 SOAP 类型。让我们称它们为 ServiceA 和 ServiceB。 ServiceA 工作正常,但 ServiceB 不太好:我收到错误消息,指出响应消息中的 CData(文本数据)在接收来自 ServiceB 的响应时在 XML 解析器/反序列化器中创建故障。 (我怀疑 CData 可能包含来自 ServiceB 的错误消息)。
现在,我安装了 WireShark 来调查发送和接收的原始数据。 Wireshark 提供了有关正在工作的 ServiceA 连接的非常好的信息:使用 HTTP 协议传输数据(顶部使用 TLS 1.2 以确保其安全),我可以很好地看到请求和响应。
但是,对于与另一个 ServiceB 的麻烦连接,所有连接都使用 TCP,而不是 HTTP。 TCP 消息的消息内容在 WireShark 中不可读。
- 首先:为什么 ServiceB 使用 TCP 而不是 HTTP? (在我的客户端代码中,Bindings 和 Endpoints 非常相似,都使用“basicHttpsBinding”)。
- 是否可以强制 ServiceB SOAP 消息通过 HTTP 而不是 TCP,从而使 WireShark 输出可读?
非常感谢任何cmets。
【问题讨论】:
-
BasicHttpsBinding 使用http进行传输。如果可以的话,能否提供一些配置信息?
标签: http wcf soap tcp wireshark