miz*_*zle 5 xml biztalk biztalk-2013
我创建了一个 BizTalk 接收位置,它有一个订阅发送端口,该端口接受封装的消息并仅使用 XML 接收管道拆分为单独的消息。
<?xml version="1.0" encoding="utf-8"?>
<MyEnvelope xmlns="MyNameSpace">
<MyData>ABC</MyData>
<MyData>DEF</MyData>
<MyData>GHI</MyData>
</MyEnvelope>
Run Code Online (Sandbox Code Playgroud)
被保存为
<?xml version="1.0" encoding="utf-8"?>
<MyData xmlns="MyNameSpace">ABC</MyData>
Run Code Online (Sandbox Code Playgroud)
,
<?xml version="1.0" encoding="utf-8"?>
<MyData xmlns="MyNameSpace">DEF</MyData>
Run Code Online (Sandbox Code Playgroud)
和
<?xml version="1.0" encoding="utf-8"?>
<MyData xmlns="MyNameSpace">GHI</MyData>
Run Code Online (Sandbox Code Playgroud)
这很棒。
但是,当消息中没有元素时,服务会发送带有自关闭和空信封的消息:
<?xml version="1.0" encoding="utf-8"?>
<MyEnvelope xmlns="MyNameSpace"/>
Run Code Online (Sandbox Code Playgroud)
我收到错误信息
来源:“XML 反汇编程序” 接收端口:“InLocation” URI:“c:\MyLocation*.xml” 原因:状态为“processing_header”的意外事件(“eos”)。
如果我手动创建一条非自动关闭的消息:
<?xml version="1.0" encoding="utf-8"?>
<MyEnvelope xmlns="MyNameSpace"></MyEnvelope>
Run Code Online (Sandbox Code Playgroud)
我没有错误。我的处理不受这些错误的影响,但它必须对性能产生一些影响,并且在 Group Hub 挂起的实例视图中乱扔垃圾。
BizTalk 似乎将自闭合节点解释为空格而不是空。这似乎与我尝试调用没有参数的服务有关,我需要发送一个自关闭节点,但 BizTalk 什么也不发送。
处理没有内容的信封一定是一个常见问题。如何配置我的应用程序以使用自关闭信封节点接收和忽略这些消息?
我还没有看到或验证过这种行为,但我相信你;)。
除非您每小时获得 10K 个文件或类似的情况,否则不必担心异常对性能的影响。
为了防止错误,您必须在管道组件中取消或重新格式化消息。