BizTalk消息未能通过架构验证,但处理正常

BizTalk消息未能通过架构验证,但处理正常,biztalk,Biztalk,我有一个类似以下内容的BizTalk架构: <Root> <Header> <SomeData></SomeData> <Detail> <MoreData1></MoreData1> <MoreData2></MoreData2> <MoreData3></MoreData3>

我有一个类似以下内容的BizTalk架构:

<Root>
   <Header>
      <SomeData></SomeData>
      <Detail>
         <MoreData1></MoreData1>
         <MoreData2></MoreData2>
         <MoreData3></MoreData3>
      </Detail>
   </Header>
</Root>

没有一个元素设置了“最大发生次数”或“最小发生次数”值

消息是在业务流程内通过向其分配XmlDocument创建的。然后,该消息将在编排中的其他几个位置使用,我将其写入磁盘进行检查

问题是,一旦消息被写出来,如果我尝试使用一些相同的xml文件作为输入实例,它们就无法通过验证。例如,有些可能有多个
元素,而有些可能缺少


一切似乎都在运行,所以我认为目前这不是一个很大的问题,但我想知道,当应用程序运行时,模式验证失败的消息如何不会抛出错误?

在BizTalk中,XML消息只在管道中验证。一旦消息到达编排,就假定(为了效率起见)不需要根据其模式验证消息。使用转换创建消息时,模式验证不会在转换后进行

因此,在您的情况下,传入的消息应该有一个打开验证的XML接收管道。这将阻止消息传入。同样,可以在XML发送管道上启用验证。这将阻止坏消息传出

但是,在业务流程中可以选择进行架构验证。首先是描述。如果你用Google/Bing搜索,还有很多类似的技术


这里还有一篇有趣的文章,您可以在编排中打开XSD验证。这听起来不错,但它是一个服务器范围的设置。因此,它将适用于所有应用程序。。。在BizTalk中,XML消息只在管道中进行验证。一旦消息到达编排,就假定(为了效率起见)不需要根据其模式验证消息。使用转换创建消息时,模式验证不会在转换后进行

因此,在您的情况下,传入的消息应该有一个打开验证的XML接收管道。这将阻止消息传入。同样,可以在XML发送管道上启用验证。这将阻止坏消息传出

但是,在业务流程中可以选择进行架构验证。首先是描述。如果你用Google/Bing搜索,还有很多类似的技术

这里还有一篇有趣的文章,您可以在编排中打开XSD验证。这听起来不错,但它是一个服务器范围的设置。因此,它将适用于所有应用程序。。。这包括那些正在工作的