%MessageID% 不同于 BTS.MessageID

%MessageID% different from BTS.MessageID

我正在尝试使用 MessageID 属性 来识别我保存在文件夹中的消息。但是,MessageID 值与我使用 BTS.MessageID 时获得的值不同。为什么?

在我的业务流程中,我从接收端口收到一条消息 "myMsg"(使用接收管道:XML 接收)。之后我用

检查 myMsg(BTS.MessageID)
System.Diagnostics.EventLog.WriteEntry("MessageID", System.String.Format("The Value = {0}", myMsg(BTS.MessageID)));

我得到例如这个值:c9953bec-72a8-4274-9ea3-d7770c52d4ab

然后我通过发送端口发送消息(使用发送管道:PassThruTransmit)

保存消息时,名称为:{EE2AB9A1-FA3C-4737-BB02-6AC0C0EA5EBC}。xml

它们为什么不同?我以为他们会是一样的。

每条消息都是独一无二的。假设您有 2 个发送端口,编排消息将发送到这些端口。您是否希望它与编排中的消息 ID 相同?我希望不会,因为您会有 2 个具有相同消息 ID 的消息实例。 (实际上是 3,因为您还应该计算您的编排消息)。

我猜你要找的是 InterchangeID,这个保持不变。

您看到的是预期的行为。

消息是对 MessageBox 的单一发布,因此接收端口发布的消息与编排发布的消息不同,因此 MessageID 值不同。

虽然您可能 'know' 它是同一条消息,但对于 BizTalk,它们不是。