【问题标题】:Catch Block not getting called from the inner loop in BizTalk orchestration未从 BizTalk 业务流程中的内部循环调用 Catch Block
【发布时间】:2021-01-03 11:11:14
【问题描述】:

在我的 BizTalk 业务流程中,我有 2 个循环,一个内部循环和一个外部循环。当外部循环中发生异常时,控制转到 catch 异常块(捕获 System.Exception),但如果内部循环中发生任何异常,则不会调用 catch 块。我所有的处理都在内循环中进行,但我无法捕获任何异常。

BizTalk 控制台事件查看器虽然从内部循环中捕获了异常 (Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException),但未调用 catch 块。

任何人都可以帮助如何从内部循环内部处理异常。

【问题讨论】:

    标签: loops exception try-catch biztalk-2013 orchestration


    【解决方案1】:

    如果由于未处理的异常而挂起,那么您可能试图用System.SystemException 而不是System.Exception 来捕获它,因为System.SystemException 不会捕获XLang 异常。确保您使用的是System.SystemException

    您还可以在作用域中添加另一个 catch 块,并使其捕获 General Exception,它应该涵盖所有内容。

    【讨论】:

    • 嗨@Dijkgraaf,我只在外部范围内使用 System.Exception ,但内部循环的 XLANg 异常仍然没有被捕获。我没有使用 System.SystemException。请建议。只是为了测试,我故意在外循环代码中创建了一个异常并调用了 catch 块,但是当在内循环中发生异常时,即使 System.Exception catch 块也不会被调用。请提出建议。
    • @PoonamChandak 肯定有其他事情发生,因为只有两个循环不会导致这种情况。你也有围绕内循环的范围吗?如果有,它有一个 catch 块吗?
    • HI .. @Dijkgraaf .. 我现在只有一个循环。并且在开始时只有 1 个作用域和一个捕获 System.Exception 对象的 catch 处理程序,但编排流程仍然根本没有进入 catch 块。你能详细说明吗?我需要重新安装 GAC 中的 DLL 吗?或其他可能是问题所在。我之前通过管理控制台安装了 dll。请建议。
    • @PoonamChandak 您不应该在 GAC 中手动安装 DLL。您应该在所有其他环境中的 Dev 和 MSI 包中从 Visual Studio 进行部署。是的,请尝试重新部署您的整个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2012-08-26
    • 2012-02-20
    相关资源
    最近更新 更多