我有一个BizTalk架构,看起来像这样:
<Root>
<Header>
<SomeData></SomeData>
<Detail>
<MoreData1></MoreData1>
<MoreData2></MoreData2>
<MoreData3></MoreData3>
</Detail>
</Header>
</Root>
Run Code Online (Sandbox Code Playgroud)
没有元素设置了Max Occurs或Min Occurs值.
通过为其分配XmlDocument,在业务流程内创建消息.然后,该消息将在业务流程中的其他几个位置使用,并将其写入磁盘以供检查.
问题是,一旦写出消息,如果我尝试使用那些相同的xml文件作为输入实例,它们将无法通过验证.例如,某些<Detail>元素可能有多个元素,而有些元素可能缺失<MoreData2>.
一切似乎都在运行,所以我认为目前这并不是一个大问题,但我想知道在应用程序运行时,未通过模式验证的消息将不会引发错误?
在BizTalk中,XML消息仅在管道中验证.一旦消息到达编排,就会假设(为了效率)消息不需要根据其模式进行验证.使用转换创建消息时,之后不会进行架构验证.
因此,在您的情况下,进入的消息应该具有启用验证的XML接收管道.这将阻止消息进入.同样,您可以在XML Send Pipeline上启用验证.这将阻止不良消息的形式退出.
但是,有一些选项可以在业务流程中进行模式验证.首先在这里描述.如果您使用Google/Bing,还有更多类似的技术.
这里还有一篇有趣的文章,你可以在这里开启Orchestration中的XSD验证.这听起来不错,但它是服务器范围的设置.因此它将适用于所有应用程序......包括正在运行的应用程序.
| 归档时间: |
|
| 查看次数: |
1962 次 |
| 最近记录: |