我有一个接收端口,其中两个 FILE 接收位置轮询同一个网络共享。接收位置之间的唯一区别是它们使用不同的文件掩码。它们都使用带有单个平面文件反汇编器组件的自定义管道。我有一个订阅接收端口的发送端口。(这只是我可以重现问题的最小设置)。
在处理一组文件(最大 1mb 大小)时,管道偶尔会抛出错误。仅当一次将多个文件复制到接收位置文件共享并且不定期发生时,才会发生这种情况。该错误通常为:
解析传入文档时出现错误:“查找时发现意外数据:'\r\n'当前正在解析的定义是GIRMFile。发生错误的流偏移量是491540。发生错误的行号是2446 . 发生错误的列是199。”。
检查所示行号处的挂起消息,始终有 512 字节的数据与传入消息不同。这 512 字节的数据始终与同时使用的其他输入文件之一的数据相匹配!或者在极少数情况下,不正确的 512 字节数据是来自同时使用但在管道处理之后的文件的数据(即暂停的平面文件具有 512 字节的 xml 块!)。这 512 个字节在挂起的消息中从未处于一致的位置。
认为 BizTalk 数据库以某种方式损坏,我将其删除并重新配置。成功处理了几百个文件后,问题又回来了。
这只发生在我们的测试盒(VMWare vm)上,所以我怀疑机器在某种程度上是问题所在。但是机器没有在其他进程中报告其他错误似乎很奇怪。