0

我有一个使用请求响应端口调用 Web 服务并等待响应的编排。这是完美的工作。

我现在正在进行测试以处理错误,并且我正在调用一个引发除以零异常的 Web 服务。编排不会将异常捕获为异常;它就像我要返回的 SOAP 错误是一个常规字符串一样。

但是,当我仅使用请求端口测试此行为时,我最终在编排的 catch 块中出现除以零异常。我还需要在请求响应端口中捕获 Web 服务异常,而不仅仅是在单向端口上。

4

2 回答 2

1

您必须首先遵守规则!

为了在使用请求-响应端口时在 Bi​​ztalk 中的范围块内捕获异常,您可能必须执行以下操作...

  1. 在用于绑定的物理请求响应端口上将重试计数设置为 0。
  2. 在编排中的逻辑请求-响应端口上启用标志传递通知以“传输”。
  3. 捕获“System.Web.Services.Protocols.SoapException”异常并按您的意愿处理。

希望这可以帮助。

参考:看看我在代码项目 Code Project中的文章

于 2009-10-22T17:24:56.703 回答
1

您看到的此类错误是因为来自 Web 服务的 HTTP 响应存在问题。BizTalk 尝试解析收到的响应并将其分解为标头和正文,然后解析标头。如果响应是格式错误的 HTTP,则会导致此类错误。它使用 SOAP 库来解释响应消息,并且由于消息错误而崩溃。可能会发生除以零的情况,因为它无法准确地从标头中获取响应长度,然后进行一些数学运算。

我会在线上放置一个数据包嗅探器(如 NetMon),然后查看实际发送到 BizTalk 的内容。如果它不符合 HTTP(浏览规范或为傻瓜找到一个好的 HTTP),BizTalk 可能会做出不可预测的反应。

祝你好运。

于 2009-11-05T16:20:25.070 回答