如何解决强制Soap / WCF使用HTTP而非TCP协议
我有一个使用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? (绑定和端点在我的客户端代码中都非常相似,都使用“ basicHttpsBinding”。)
- 是否可以强制ServiceB SOAP消息通过HTTP而不是TCP传输,从而使WireShark输出可读?
非常感谢任何评论。
解决方法
对于阅读以上帖子的人:
事实证明,我的客户端和ServiceB之间有一个中间代理。 似乎此代理(对我而言,令人惊讶)执行XML反序列化。而且,如果代理尝试从ServerB反序列化异常,则代理会抛出一个讨厌的“无法反序列化CData”,并将其交给客户端。导致客户(我)非常困惑。
(是的,教训是没有服务必须抛出异常。必须捕获,处理所有异常,并且必须将预定义字段中的受控错误提供给调用方)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。