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

时间:2021-04-16 04:13:02

标签: .net wcf 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 消息?

0 个答案:

没有答案