如何防止 BizTalk 2013/R2 WCF-WebHttp Rest SendPort 在 Http Status=400 上挂起

2024-01-08

我使用 WCF-WebHttp SendPort 从 BizTalk 编排调用供应商的 REST 服务。

即使我在具有scope.exception的业务流程中捕获了此System.Exception,SendPort仍然处于挂起状态。是否有办法防止挂起(WCF-CustomBehavior 或绑定?)大多数外部 REST 服务的 BizTalk 使用者如何处理这个问题?

有许多不同的错误,有些是为了安全,有些是为了数据/配置,可能会返回 400 状态,下面是一个示例:

发送到发送端口“spP44WebHttp”上的适配器“WCF-WebHttp”的消息 与 URI“https://test.abc.com/api/v3 https://test.abc.com/api/v3“已暂停。错误详细信息: System.Net.WebException:远程服务器返回意外的异常 响应:(400) 错误请求。 {“httpStatusCode”:400,“httpMessage”:“错误 Request","errorMessage":"无法处理发货 请求","错误":[{"严重性":"错误","消息":"客户-X 不 支持这些配件: AIRPU","来源":"系统"}],"supportReferenceId":"e0117674-9f83-4b42-b861-2e9b9f636323"}

当您在任何其他双向 WCF 发送(例如 WCF-SQL)周围出现范围/异常时,当您捕获错误时,它不会使 SendPort 挂起,不是吗?

有关的:BizTalk 捕获 Http 响应代码 https://stackoverflow.com/questions/31613171/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 https://social.technet.microsoft.com/wiki/contents/articles/33238.biztalk-server-2013-r2-handle-exceptions-from-rest-services-in-orchestration.aspx然而,它指出他们无法发现错误。我可以捕获 400 错误,但我不喜欢的是挂起的发送端口。

更新 2:我正在尝试自定义行为,我将在 BeforeSendReply 中重置状态代码。但是使用调试器,我看到以下方法运行:Validate()、AddBindingParameters()、ApplyClientBehaviors()、BeforeSendRequest(),但是 - 我从未看到 BeforeSendReply() 运行。因此,如果 BizTalk 适配器不喜欢 400 状态,是否会阻止它返回自定义行为?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止 BizTalk 2013/R2 WCF-WebHttp Rest SendPort 在 Http Status=400 上挂起 的相关文章

随机推荐