Biztalk业务流程请求 - 响应异常处理

时间:2009-10-19 14:31:23

标签: exception-handling biztalk biztalk2006r2

我有一个使用请求响应端口的业务流程来调用Web服务并等待响应。 这很完美。

我现在正在进行测试以处理错误,我正在调用一个抛出除零异常的Web服务。 业务流程不会将异常作为例外捕获;它就像我回来的SOAP错误一样,是一个常规的字符串。

然而,当我仅使用请求端口测试此行为时,我最终在业务流程的catch块中以除零异常结束。 我还需要在请求响应端口中捕获Web服务异常,而不仅仅是单向端口。

2 个答案:

答案 0 :(得分:1)

你必须先遵守规则!

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

  1. 在您用于绑定的物理请求 - 响应端口上将retry-count设置为0.
  2. 在业务流程中的逻辑请求 - 响应端口上启用“传送通知”标志。
  3. 抓住“System.Web.Services.Protocols.SoapException”异常并按照您的要求处理它。
  4. 希望这会有所帮助。

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

答案 1 :(得分:1)

您看到的此类错误是因为来自Web服务的HTTP响应存在问题。 BizTalk尝试解析收到的响应并将其分解为标题和正文,然后解析标题。如果响应格式错误,则会导致此类错误。它正在使用SOAP librbary来解释响应消息,并且它会爆炸,因为消息很糟糕。除以零可能是因为它无法准确地从标题中获得响应长度,然后对数学进行了一些数学处理。

我会在线路上放置一个数据包嗅探器(如NetMon),看看实际发送到BizTalk的是什么。如果它不符合HTTP(浏览规范或找到一个好的HTTP用于假人),BizTalk可以做出不可预测的反应。

祝你好运。