在 BizTalk Orch 的管道验证中捕获异常

Catching Exception in Pipeline Validation in BizTalk Orch

我正在进行关于在编排中捕获验证错误的概念验证。最终,我们可能希望将它们映射回响应消息。

我创建了一个调用带有验证的接收管道的表达式形状(如此处所述:https://docs.microsoft.com/en-us/biztalk/core/how-to-use-expressions-to-execute-pipelines)。

它在一个原子范围内,它有一个补偿处理程序,但没有异常处理程序。管道在验证时崩溃,并结束了编排。我如何捕获它并查看它生成的数据?最终,我将尝试捕获多个异常的组件:

rcvPipelineOutputMsgs1 = 
 Microsoft.XLANGs.Pipeline.XLANGPipelineManager.ExecuteReceivePipeline
(typeof(Myapp.Pipelines.ValidateAtlastRequestPipeline), msg_In);

错误已写入事件日志。数据错了,想报错,又想抓。

Shape name: Call Validation
ShapeId: efe2529a-acaa-416b-ad8e-c3faef9624c5
Exception thrown from: segment 2, progress 3
Inner exception: There was a failure executing pipeline "Myapp.Pipelines.ValidateAtlastRequestPipeline". Error details: "The XML Validator failed to validate.
Details: The element 'LtlTenderRequest' has invalid child element 'DocumentName'. List of possible elements expected: 'Tenders'.. ".

Exception type: XLANGPipelineManagerException

将原子作用域(执行 PipelineManager 所需)放入 长 运行 作用域 (和编排)中,并带有 异常处理程序。你根本不需要补偿块。

您应该能够直接捕获 XLANGPipelineManagerException,或者只是捕获异常。