使用地图转换消息时出现 Biztalk 2020 异常

Posted

技术标签:

【中文标题】使用地图转换消息时出现 Biztalk 2020 异常【英文标题】:Biztalk 2020 exception when transforming message using a map 【发布时间】:2021-11-20 16:55:10 【问题描述】:

我们有一个应用程序可以在 Biztalk 2010 中正常运行,但相同的导出应用程序在 Biztalk 2020 中导入和运行时会产生异常。

应用程序有一个编排,它接收传入的 xml 并使用映射对其进行转换。里面的代码跟在this Microsoft doc后面。

此代码在 Biztalk 2010 中有效,但在 Biztalk 2020 中,当我们调用变换形状时总是出现异常。

Exception occurred: Object reference not set to an instance of an object.,    
   at Microsoft.XLANGs.Core.Service.ApplyTransform(Type mapRef, Object[] outParams, Object[] inParams)
   at XXX.XXX.XXX.Core.Process.Billing.BillingServiceProcess.segment2(StopConditions stopOn)
   at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)

我通过传入输入 xml 在 Visual Studio 中使用标头映射手动测试了这一点,并确认我得到了输出 xml,没有任何问题。 我验证了地图存在于 Biztalk 中。 我已经验证传入的 xml 是有效的。

我似乎无法做的一件事是在编排中放置一个调试点,该选项对我来说是灰色的,我仍然不知道为什么。

作为 Biztalk 2020 的一部分,是否存在已知问题或缺少的步骤,我需要知道才能使其正常工作?

【问题讨论】:

您是如何尝试添加断点的?在 BizTalk 管理控制台的业务流程调试器中?形状跟踪是否开启? 事实证明,我的编排不允许调试的原因是因为它被设置为事务类型的“原子”范围。 【参考方案1】:

BizTalk 2010 和 BizTalk 2013 之间的地图发生了重大变化,请参阅 Known issues in BizTalk Server 2013,因此从 2010 年起迁移的任何地图都需要检查这些问题。

当输入 XML 节点包含任何为 false 的值或输入 XML 节点为空时,脚本 functoid 中的布尔参数为 true。 修复:使用字符串而不是布尔输入。 当您在 functoid 中使用私有函数时,映射失败并且您收到以下错误消息:修复:将函数声明为公共而不是私有。

无法调用扩展对象“http://schemas.microsoft.com/BizTalk/2003/userCSharp”的方法“MyPrivateFunct”,因为它不是公共的。

当您从 functoid 返回空值时,映射将失败,并且您会收到以下一般错误消息:修复返回 String.Empty 或其他一些替代值来表示空情况。如果需要,请使用全局变量使 null 值在多个函数中可用。

异常类型:Microsoft.XLANGs.Core.XTransformationFailureException

异常:执行转换 My.Map 时遇到错误。错误:转换失败。

在该已知问题页面上还有其他一些问题,但您遇到这些问题的可能性较小。

请注意,有一个解决方法是设置使用 XSL 转换标志,但是根据我的博客 BizTalk 2013 R2 CU2 & BizTalk 2016 – Use XSL Transform,它有一些缺点,我不建议使用它,除非它们已修复您无法测试BizTalk 2020/Visual Studio 2019 中的 Visual Studio 中的地图,因为该标志在那里不起作用。

【讨论】:

谢谢,很高兴知道这一点...就我而言,在我卸载并重新安装 Biztalk 中的所有其他应用程序后,我终于可以正常工作了。我还启动了当时没有运行的 Biztalk 数据库代理......我仍然不确定这些步骤中的哪一个有助于解决我的问题。

以上是关于使用地图转换消息时出现 Biztalk 2020 异常的主要内容,如果未能解决你的问题,请参考以下文章

配置绑定时出现 BizTalk oracle 错误

如何在 BizTalk 自定义管道中实现下拉列表

BizTalk 2020 XSLT 3.0 - 样式表编译期间报告错误

进行预览时出现 Bigquery API 限制超出错误

BizTalk AS2EDI 跟踪 EDI 消息

尝试使用 Spring Boot 使用 JMS 主题消息时出现异常