BizTalk 2013-BTS.MessageID和outMsg.MessageID不匹配

BizTalk 2013-BTS.MessageID和outMsg.MessageID不匹配,biztalk,biztalk-2013,biztalk-pipelines,Biztalk,Biztalk 2013,Biztalk Pipelines,我正在使用BizTalk Server 2013。我在反汇编阶段有一个定制的接收管道组件。该组件根据“位置”节点将输入xml消息分解为单独的消息。例如,如果输入消息有3个位置,那么它将被分成3条消息,每个位置一条。输入消息还可以具有作为二进制数组的附件。自定义管道组件实现IDisassemblerComponent。 对于每个位置,都会创建一条新消息,如下所示- outMsg=pContext.GetMessageFactory().CreateMessage() 在编排中,消息Id的检索方式如

我正在使用BizTalk Server 2013。我在反汇编阶段有一个定制的接收管道组件。该组件根据“位置”节点将输入xml消息分解为单独的消息。例如,如果输入消息有3个位置,那么它将被分成3条消息,每个位置一条。输入消息还可以具有作为二进制数组的附件。自定义管道组件实现IDisassemblerComponent。 对于每个位置,都会创建一条新消息,如下所示-
outMsg=pContext.GetMessageFactory().CreateMessage()
在编排中,消息Id的检索方式如下-
messageId=myMsg(BTS.messageId)

业务逻辑依赖于messageId将请求标记为已处理

问题-当输入请求没有任何附件时,outMsg.MessageID和myMsg(BTS.MessageID)匹配,因此,业务逻辑工作,请求被标记为完成。但是,如果输入请求有附件,那么outMsg.MessageID和myMsg(BTS.MessageID)是不同的,业务逻辑将挂起该请求。我使用了一个1MB的附件来复制这个问题

我试图通过在管道组件中提升outMsg.MessageID来解决这个问题,并在编排中使用它而不是myMsg(BTS.MessageID)。 然而,我不确定这是否是正确的方法,我想找出并解决根本原因


为什么outMsg.MessageID和myMsg(BTS.MessageID)不匹配附件,并且在请求有附件时有所不同?

如果创建新邮件,它将获得新的MessageID。如果您希望一个ID在源于一条消息的所有消息中都相同,则需要
BTS.InterchangeID


另请参见

如果创建新消息,它将获得新的消息ID。如果您希望一个ID在源于一条消息的所有消息中都相同,则需要
BTS.InterchangeID


另请参见

是,新消息将有一个新的消息ID。我不明白的是,在一个场景中,这个新的MessageID与BTS.MessageID匹配,而在另一个场景中则不匹配。这怎么可能?是的,新消息将有一个新的消息ID。我不明白的是,在一个场景中,这个新的MessageID与BTS.MessageID匹配,而在另一个场景中则不匹配。这怎么可能?