我使用WCF-WebHttp SendPort从BizTalk业务流程调用供应商的REST服务。
即使我在带有scope.exception的业务流程中捕获此System.Exception,SendPort仍会被挂起。反正有没有阻止Susepend(WCF-CustomBehavior或Binding?)外部REST服务的大多数BizTalk消费者如何处理这个?
有许多不同的错误,一些用于安全性,一些用于可能以400状态返回的数据/配置,这是一个示例:
发送给适配器的消息" WCF-WebHttp"在发送端口" spP44WebHttp" 使用URI" https://test.abc.com/api/v3"暂停错误详情: System.Net.WebException:远程服务器返回意外 回复:(400)不良请求。 {" httpStatusCode" 400" httpMessage":"差 请求"," errorMessage":"无法处理货件 请求""错误":[{"严重性":" ERROR""消息":"顾客-X才不是 支持这些辅助: AIRPU""源":" SYSTEM"}]," supportReferenceId":" e0117674-9f83-4b42-b861-2e9b9f636323" }
当你有任何其他双向WCF发送的范围/异常时,例如WCF-SQL,当你发现错误时它不会让SendPort暂停,是吗?
相关:BizTalk Catch Http Response Code
更新1:我发现这个似乎是目标的TechNet帖子: https://social.technet.microsoft.com/wiki/contents/articles/33238.biztalk-server-2013-r2-handle-exceptions-from-rest-services-in-orchestration.aspx 但是,它表示他们无法发现错误。我可以捕获400个错误,但我不喜欢的是Suspended SendPort。
更新2:我正在尝试自定义行为,我将重置BeforeSendReply中的状态代码。但是使用调试器,我看到运行以下方法:Validate(),AddBindingParameters(),ApplyClientBehaviors(),BeforeSendRequest(),但是 - 我从未看到BeforeSendReply()运行。因此,如果BizTalk适配器不喜欢400状态,是否会阻止它重新进入自定义行为?