如何在BizTalk业务流程中从Rest服务捕获http 400状态

如何在BizTalk业务流程中从Rest服务捕获http 400状态,rest,wcf,biztalk,Rest,Wcf,Biztalk,在BizTalk 2013/R2(CU6)上,我在当前客户端中看到另一个应用程序/编排似乎正在执行此操作,但我的应用程序/编排没有 我通过执行导出、编辑、然后导入、仅更改名称以及操作/方法绑定克隆了它们的发送端口。它具有“已检查失败消息的启用路由” 看起来我在编排中用System.Exception捕捉到了它, 但我仍然看到发送端口挂起(可恢复),以及路由错误(不可恢复) 我捕获的示例错误(我故意强制执行错误以测试错误处理) System.Net.WebException:远程服务器返回了意外错

在BizTalk 2013/R2(CU6)上,我在当前客户端中看到另一个应用程序/编排似乎正在执行此操作,但我的应用程序/编排没有

我通过执行导出、编辑、然后导入、仅更改名称以及操作/方法绑定克隆了它们的发送端口。它具有“已检查失败消息的启用路由”

看起来我在编排中用System.Exception捕捉到了它, 但我仍然看到发送端口挂起(可恢复),以及路由错误(不可恢复)

我捕获的示例错误(我故意强制执行错误以测试错误处理)

System.Net.WebException:远程服务器返回了意外错误 回答:(400)请求错误。{“httpStatusCode”:400,“httpMessage”:“错误” 请求“,”错误消息“:”无法处理装运 请求“,”错误“:[{”严重性“:”错误“,”消息“:”未找到任何凭据 找到此供应商的。您是否将其添加到ABC 仪表板?,“来源”:“系统”}],“支持参考ID”:“31eee61a-8770-4524-bada-2d906a53ab48”}

我看到其他一些博客和问题表明500个错误没有返回,http状态没有设置。但我没有看到任何关于暂停发送端口的信息。似乎今天早些时候,我的系统。异常并没有捕捉到它,但我不能及时返回以确定

我已将发送端口上的重试计数设置为0

另外,究竟是什么决定了哪些http状态可以返回到编排?我同事的代码也检查了400、401和403

相关问题:


更新:我的同事在另一个团队,但我收到了她的回复。她有另一个编排,只是“吃”错误消息以避免错误

Http错误与任何其他硬错误相比应该没有什么特别之处。他们又回到了配器上

下面是一篇关于使用一些有用的技术处理编排中的错误的文章


是,即使您在编排中将其作为
系统捕获。异常
消息仍将挂起在发送端口。您可以通过执行以下操作来修复此问题

  • 打开发送端口上失败消息的路由
  • 另一个发送端口有一个自定义端口,或者根据您的说明和Johns链接的博客,有一个订阅来自发送端口的所有错误消息的编排,例如
    ErrorReport.SendPortName==SendPortName
  • 如果您有另一个发送端口,如ESB ALL.Exception端口订阅失败,则需要更新规则以排除该端口
    ErrorReport.SendPortName!=SendPortName

  • 空适配器执行名称所暗示的操作,它只是将消息丢弃。您可以在GitHub上找到空适配器。如果您无法安装,只需将其写入文件位置,并进行清理作业即可将其删除。

    很好,我可能需要在正在编写的教程中再次尝试此操作。但如果它们没有安装,该怎么办?我试图在编排中捕获HTTP 4xx状态,但似乎它们在System.Exception或System.Net.WebException处理程序中都没有被捕获