微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果响应不是 SOAP 消息,即使它应该是,如何获得原始响应?

如何解决如果响应不是 SOAP 消息,即使它应该是,如何获得原始响应?

一个我必须与之交互的外部 SOAP 服务。

为此我打开VisualStudio,右键单击References,单击“添加服务引用”,输入WSDL 文档的地址并单击“确定”。这行得通,VisualStudio 为我生成一个库 - 一个 WCF 客户端 - 可用于与上述外部 API 进行交互。

唯一的问题是有时我会收到System.ServiceModel.CommunicationException: Unrecognized message version.

fiddler 向我展示了原因。这是服务器的响应:

<h1>CException</h1>
<p>A non-numeric value encountered</p>

好吧,这绝对不是 SOAP 响应,难怪 .NET 拒绝解析它。但在这种情况下,我可以检索原始响应吗? (也许从 HTML 标签中检索错误并将其显示用户是有意义的)

我的尝试:我从 Microsoft 文档中阅读了这篇文章How to: Inspect or Modify Messages on the Client 它说:

检查或修改消息

(这也是 this SO answer 建议的)

我尝试了 IContractBehaviorIEndpointBehavior。不幸的是,结果是相同的:CommunicationException调用我的自定义行为之前 被抛出,因此我无法获得原始响应。 (如果响应 SOAP 消息,则不会抛出异常,调用我的行为,我可以获得原始响应,但在这种情况下,我对它不感兴趣:()>

有没有办法获得原始响应,即使它不是 SOAP 消息?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。