我正在使用BizTalk Server 2013 WCF-WebHttp适配器来调用REST API SalesForce.
当我收到不同于200的HTTP状态代码时,我的业务流程捕获SystemException,但我仍然暂停了一个发送端口实例.
是否有任何“本机”解决方案可以避免发送端口实例暂停?
我看过这篇文章:
BizTalk Server: REST Services Error Handling
但对于WCF-WebHttp适配器,CustomBinding选项不可用.
我试图添加错误消息,但我找不到合适的类型来捕获此异常.
你有什么主意吗 ?
最佳答案 不幸的是,没有
有一篇文章BizTalk Server 2013 R2: Handle exceptions from REST services in Orchestration的更新版本
您必须将发送端口设置为WCF-Custom并使用自定义绑定,然后从WCF-WebHttp重新创建所有设置.
更多细节要遵循.
更新:
将Orchestration中的异常作为系统异常捕获是好的,然后您可以检查错误以查看它是否是业务异常,例如如果您在执行创建或更新并获取404之前正在执行查询以查看RESTful服务中是否存在对象.
但是,您必须执行一些操作来停止端口上的Suspended消息.
1)在发送端口上的端口启用路由失败消息上停止Suspended消息.
2)然而,这意味着它将转到您处理失败消息的任何框架,从而导致业务异常引发大量错误
为了防止这种情况,您需要在异常处理程序上调整过滤器表达式,或者在异常处理框架中使用规则来忽略这些消息.
例如,我们使用ESB异常处理框架,我们调整规则以排除该特定的发送端口.
3)然而,你仍然需要有其他东西订阅失败的消息以使它们消失,我们使用一个自定义的空适配器,用过滤器来订阅错误.这意味着错误仅发送到业务流程.
NULL适配器过滤表达式