BizTalk'的可能原因;这是一个错误的例外

BizTalk'的可能原因;这是一个错误的例外,biztalk,biztalk-2016,Biztalk,Biztalk 2016,我不断收到错误的BodyPartException多部分消息“msgWrapper”在一个编排上有主体部分“body”,预期主体部分“Head”,而在同一应用程序中的另一个几乎相同的编排工作正常。 我已经调试,重新部署,做了很多尝试,直到一位同事发现一个几乎不可能看到的差异。该错误位于BizTalk业务流程的代码生成器中(请参阅解决方案)。首先是对问题的描述: 我定义了两种多部分消息类型,几乎相同,但主体部分具有不同的模式 使用这些由多个部分组成的消息类型的业务流程几乎相同,但与此问题无关 运

我不断收到错误的BodyPartException多部分消息“msgWrapper”在一个编排上有主体部分“body”,预期主体部分“Head”,而在同一应用程序中的另一个几乎相同的编排工作正常。

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

  • 我定义了两种多部分消息类型,几乎相同,但主体部分具有不同的模式
  • 使用这些由多个部分组成的消息类型的业务流程几乎相同,但与此问题无关
  • 运行两个业务流程。对我来说,其中一个总是按预期工作,而另一个总是挂起,上面显示异常消息

  • 答案是在我的情况下,其中一个多部分的消息类型是先创建身体部分,然后创建头部,而另一个是在相反的方向创建的。但是,这完全隐藏在UI中。您无法看到存储了哪个订单正文和标题,因为它们在业务流程视图中总是以相同的顺序出现。

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

    为了修复这个bug,我必须在XML视图中打开我的编排的.odx文件,并将消息部分移动到那里。这是修复问题的代码更改的比较:


    结论是,消息部分的顺序很重要,但不可能在编排视图中看到。开发人员不知道顺序上实际上有差异。

    答案是在我的例子中,其中一个多部分消息类型是先使用身体部分,然后使用头部创建的,而另一个消息类型是以相反的方向创建的。但是,这完全隐藏在UI中。您无法看到存储了哪个订单正文和标题,因为它们在业务流程视图中总是以相同的顺序出现。

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

    为了修复这个bug,我必须在XML视图中打开我的编排的.odx文件,并将消息部分移动到那里。这是修复问题的代码更改的比较:

    结论是,消息部分的顺序很重要,但不可能在编排视图中看到。对于开发人员来说,顺序实际上是不同的