BizTalk在接收适配器和管道之间抛出NullReferenceException

时间:2014-06-18 15:21:23

标签: .net biztalk nullreferenceexception biztalk-2009

我开发了一个BizTalk管道,虽然它在开发虚拟机上运行良好,但它不在生产环境中。这两种环境都运行BizTalk Server 2009。

我的管道中的所有组件在其他管道上都能正常工作。我得到的例外情况是,在Windows应用程序事件日志中(<>之间的所有内容都无关紧要):

  

适配器收到的消息&#34; FILE&#34;在接收位置&lt;接收位置&gt;使用URI&lt; URI&gt;暂停    错误详细信息:执行接收管道失败:&lt; My Pipeline&gt;来源:&#34;未知&#34;接收端口:&lt;接收端口&gt; URI:&lt; URI&gt;原因:对象引用未设置为对象的实例    MessageId:&lt;消息ID&gt;
   InstanceID:&lt; Instance ID&gt;

我知道没有组件被执行,因为第一个组件将内容写入自定义跟踪应用程序的数据库。这不会发生在此管道上,并且相同的组件适用于使用它的所有其他管道。

我的管道上的所有组件也用于其他管道,但没有一个管道存在这种问题。

所以这个异常发生在适配器和管道之间。最初使用的适配器是带有WCF-Custom的{​​{1}},但使用sqlBinding适配器会导致相同的异常。

现在,事件日志条目是我对所有通过此管道的消息的唯一跟踪。没有暂停的实例。当我使用默认的PassThrough或XMLReceive管道时,它就可以正常工作。

我从哪里开始?有什么不对? 是否有办法为此异常获取某种堆栈跟踪以帮助跟踪它?

1 个答案:

答案 0 :(得分:1)

出于绝望,我开始一遍又一遍地部署管道,每次都留下不同的组件,直到我找到了罪魁祸首。

事实证明,我的本地开发VM(和Visual Studio)将其中一个组件从GAC中拉出而不是标准C:\Program Files (x86)\Microsoft BizTalk Server 2009\Pipeline Components文件夹。此程序集与生产环境中的组件不匹配。