在BizTalk 2013 / R2(CU6)上,我在我当前的客户端看到了另一个app / orchestration,似乎正在这样做,但我的app / orchestration却没有。
我通过导出,编辑,然后导入,仅更改名称和操作/方法绑定来克隆其发送端口。它具有“检查失败消息的启用路由”。
看起来我正在使用System.Exception在业务流程中捕获它, 但我仍然看到SendPort暂停(可恢复)和路由错误(不可恢复)。
我正在捕获的示例错误(我故意强制错误来测试错误处理)。
System.Net.WebException:远程服务器返回了意外情况 回复:(400)不良请求。 { “httpStatusCode”:400, “httpMessage”:“坏 请求“,”errorMessage“:”无法处理货件 请求“,”错误“:[{”severity“:”ERROR“,”message“:”没有凭据 找到这个供应商。你有没有把它们添加到ABC 仪表盘“, “源”: “SYSTEM”}], “supportReferenceId”: “31eee61a-8770-4524-八达-2d906a53ab48”}
我见过其他一些博客和问题表明没有返回500个错误,并且未设置http状态。但我还没有看到有关Suspended SendPorts的任何信息。也好像今天早些时候,我的System.Exception没有抓住它,但我无法及时回过头来确定。
我已将SendPort的重试次数计为0.
此外,实际上确定哪些http状态可以返回到业务流程?我的同事的代码也检查了400,401和403。
相关问题:BizTalk Catch Http Response Code
更新:我的同事在另一个团队,但我从她那里听到了回复。她有另一个业务流程只是“吃掉”错误消息以避免错误。
答案 0 :(得分:1)
对于Http错误与任何其他硬错误相比,不应该有任何特殊之处。他们只是同样地回到了Orchestration。
这是一篇关于使用一些有用的技术处理Orchestrations中的错误的文章。
BizTalk Server: Suspend and Resume an Orchestration on Two Way Port Error
答案 1 :(得分:1)
是的,即使您在业务流程中以System.Exception
的身份捕获消息,消息仍将在发送端口中挂起。您可以通过以下操作解决此问题。
ErrorReport.SendPortName == SendPortName
。ErrorReport.SendPortName != SendPortName
Null Adapter会执行其名称所暗示的功能,只是将消息丢弃。您可以在GitHub上找到NULL适配器。如果无法安装该文件,只需将其写入FILE位置,然后执行清理作业将其删除。