BizTalk 的 WrongBodyPartException 的可能原因

Possible causes of BizTalk's WrongBodyPartException

我不断收到 WrongBodyPartException 多部分消息 'msgWrapper' 在一个编排上有正文部分 'Body',预期正文部分 'Head' 而另一个同一应用程序中几乎相同的一个工作正常。

我已经调试、重新部署并进行了多次尝试,直到一位同事发现了几乎不可能看到的差异。该错误存在于 BizTalk 业务流程的代码生成器中(请参阅解决方案)。先描述问题:

  1. 我定义了两个 Multi-part Message Type,几乎相同,但 Body 部分有不同的架构。
  2. 使用这些多部分消息类型的业务流程几乎相同,但与此问题无关。
  3. 运行 两种配器。对我来说,一个总是按预期工作,而另一个总是因上面的异常消息而暂停。

答案是在我的场合中,其中一种多部分消息类型首先创建主体部分,然后创建头部,而另一种则以相反的方向创建。然而,这完全隐藏在 UI 中。您无法查看 Body 和 Head 的存储顺序,因为它们在 Orchestration View 中始终以相同的顺序出现。

但是,如果您设法停止以某种方式正常工作的消息,您可以通过检查消息详细信息并比较消息部分来查看差异。此屏幕截图显示了左侧的失败情况和右侧应用修复后的工作情况:

要修复该错误,我必须在 XML 视图中打开我的 Orchestration 的 .odx 文件并将消息部分移到那里。这是修复问题的代码更改的比较:

结论是消息部分的顺序很重要,但无法在 Orchestration View 中看到。对开发人员来说实际上顺序有所不同。