BizTalk error: failure executing receive pipeline, document type does not match any of the given schemas

BizTalk error: failure executing receive pipeline, document type does not match any of the given schemas

我被这个错误困住了,如果有任何好主意可以更接近解决方案,我将不胜感激。使用的模式是全球标准,不受我控制。

完整的错误消息:

There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "XML disassembler" Receive Port: "[receive port name]" URI: "[url to imput xml]" Reason: Document type "[namespace]#[envelope root element name]" does not match any of the given schemas."

我的设置: 我有用于 XMLReceive 管道的信封模式来分批处理消息。我已经在接收位置的 EnvelopeSpecNames 中指定了程序集信息来实现这一点。我设置了 schema 属性 Envelope = Yes,并指定了 Root Reference(因为 schema 中有很多根元素)。我使用 PropertySchema 从 envelope 提升一些属性以用于以后的处理,所有引用似乎都是正确的。

我仔细检查了配置,BizTalk 知道错误消息中引用的架构(还检查了数据库以验证是否存在且没有重复)。通过在每个地方重新复制和粘贴来验证每个名称。我已经检查过将应用程序导入到一个全新的环境中,但出现了同样的错误。

我错过了什么?

我之前的理论是错误提供了错误的信息,但是由引用 to/from 和 属性 模式引起的,但一切都已检查完毕。我目前的理论是,错误与完全不同的东西有关 - 但是什么!?

在实际发布此问题后的短短 10 秒内,理论具体化为解决方案的明确建议:body xpath。

因此,总而言之,您需要指定: - Envelope = Yes(告诉 BizTalk 将消息视为封装消息) - 根元素(为信封提供正确的根元素) - 正文 xpath(即信封内内容消息的 xpath 表达式)

希望对大家有所帮助!