0

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

该应用程序有一个编排,它接受传入的 xml 并使用映射对其进行转换。里面的代码遵循这个 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 的一部分,是否存在已知问题或缺少的步骤,我需要知道才能使其正常工作?

4

1 回答 1

1

BizTalk 2010 和 BizTalk 2013 之间的映射发生了重大变化,请参阅BizTalk Server 2013 中的已知问题,因此需要检查从 2010 向上迁移的任何映射是否存在这些问题。

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

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

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

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

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

已知问题页面上还有更多内容,但您不太可能遇到这些问题。

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

于 2021-09-28T21:52:55.027 回答