BizTalk映射不会在转换开始时调用脚本functoid使用的辅助类的默认构造函数

时间:2011-12-20 07:18:11

标签: biztalk

我在地图中使用脚本functoid。我使用可序列化类的外部程序集辅助方法配置脚本functoid。我注意到map第一次执行时会调用外部程序集中定义的Serializable helper类构造函数,而我是init。类成员的默认值并按预期​​工作。

在下一次/第二次运行中,类构造函数不会被map调用,并且类成员在上次执行map时保持值设置。我在编排中使用地图,我的编排不是singelton。因此,在第一次执行我的地图后,助手类每次都会向脚本functoid返回相同的值。

请帮助我在每次执行地图时如何强制biztalk创建地图辅助类的新实例???

2 个答案:

答案 0 :(得分:0)

BizTalk运行时缓存给定地图类型的扩展对象实例。只为每个使用它的主机实例调用一次构造函数。

但是,您可以为地图助手创建工厂类。从脚本functoid调用此工厂类,并将输出链接到内联C#functoid,该对象将对象存储在地图中的实例字段中。您可以在其他脚本functoid中引用该字段,该字段需要在您的帮助程序上调用方法。

答案 1 :(得分:-1)

请参阅有关Biztalk external assembly calls的帖子。您不能拥有静态类 - 辅助方法必须是静态的,但您需要每次在静态方法中执行初始化。这是为了在补液/脱水过程中进行状态管理。