我有一个使用请求响应端口调用 Web 服务并等待响应的编排。这是完美的工作。
我现在正在进行测试以处理错误,并且我正在调用一个引发除以零异常的 Web 服务。编排不会将异常捕获为异常;它就像我要返回的 SOAP 错误是一个常规字符串一样。
但是,当我仅使用请求端口测试此行为时,我最终在编排的 catch 块中出现除以零异常。我还需要在请求响应端口中捕获 Web 服务异常,而不仅仅是在单向端口上。
我有一个使用请求响应端口调用 Web 服务并等待响应的编排。这是完美的工作。
我现在正在进行测试以处理错误,并且我正在调用一个引发除以零异常的 Web 服务。编排不会将异常捕获为异常;它就像我要返回的 SOAP 错误是一个常规字符串一样。
但是,当我仅使用请求端口测试此行为时,我最终在编排的 catch 块中出现除以零异常。我还需要在请求响应端口中捕获 Web 服务异常,而不仅仅是在单向端口上。
您必须首先遵守规则!
为了在使用请求-响应端口时在 Biztalk 中的范围块内捕获异常,您可能必须执行以下操作...
希望这可以帮助。
参考:看看我在代码项目 Code Project中的文章
您看到的此类错误是因为来自 Web 服务的 HTTP 响应存在问题。BizTalk 尝试解析收到的响应并将其分解为标头和正文,然后解析标头。如果响应是格式错误的 HTTP,则会导致此类错误。它使用 SOAP 库来解释响应消息,并且由于消息错误而崩溃。可能会发生除以零的情况,因为它无法准确地从标头中获取响应长度,然后进行一些数学运算。
我会在线上放置一个数据包嗅探器(如 NetMon),然后查看实际发送到 BizTalk 的内容。如果它不符合 HTTP(浏览规范或为傻瓜找到一个好的 HTTP),BizTalk 可能会做出不可预测的反应。
祝你好运。