修复:当 XML 到平面文件的 EDI 消息处理在子循环中包含空节点时失败BizTalk Server

应用对象
BizTalk Server 2016 Branch BizTalk Server 2016 Developer BizTalk Server 2016 Enterprise BizTalk Server 2016 Standard BizTalk Server 2013 R2 Branch BizTalk Server 2013 R2 Developer BizTalk Server 2013 R2 Enterprise BizTalk Server 2013 R2 Standard

症状

假设你在 Microsoft BizTalk Server 中使用电子数据交换 (EDI) 。 将 EDI 消息从可扩展标记语言 (XML) 处理到 EDI 发送管道中的平面文件时,你可能会注意到,如果消息在子循环中包含空节点,则进程会失败。 例如,节点表示为 <ns0:DTM_SubLoop/> 而不是 <ns0:DTM_SubLoop></ns0:DTM_SubLoop>

此外,还可能会收到类似于以下内容的错误消息:

注意

  • 日志名称:应用程序
  • 来源:BizTalk Server
    日期: 日期/时间
    事件 ID:5743
    任务类别:BizTalk Server
    级别:
    警告关键字:
    经典用户:不适用
    计算机: ComputerName
    说明:适配器无法传输用于发送 URL 为“FilePath\FileName”的端口“SendPort1”的消息。 它将在此发送端口指定的重试间隔后重新传输。 详细信息:“无法读取管道生成的流。
  • 详细信息:错误:1 (段级别错误)
    SegmentID:AMT
    在 TS 中的位置: 36 2:
    意外的段“。
    Event Xml: <Event xmlns=“FilePath\FileName”>  
    <机制>    
    <提供程序名称=“BizTalk Server” />    
    <EventID 限定符=“32960”>5743</EventID>    
    <级别>3</级别>    
  • <任务>1</任务>
    <关键字>0x80000000000000</关键字>
    <TimeCreated SystemTime=“Date/Time” />    
    <EventRecordID>1159013</EventRecordID>    
    <通道>应用程序</通道>    
    <Computer>ComputerName</Computer>    
    <安全/>  
    </系统>  
    <EventData>    
    <Data>SendPort1</Data>    
    <数据>数据</数据>    
    <数据>无法读取管道生成的流。
     详细信息:错误:1 (段级别错误) SegmentID:TS 中的 AMT 位置:36 2:意外段< /Data></EventData></Event>

解决方法

以下BizTalk Server累积更新中修复了此问题:

BizTalk Server 2013 R2 的累积更新 7

2016 BizTalk Server累积更新 3

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

有关BizTalk Server的服务包和累积更新列表的信息,请单击以下文章编号以查看Microsoft知识库中的文章:

BizTalk Server的2555976 Service Pack 和累积更新列表

有关BizTalk Server修补程序的详细信息,请单击下面的序列号以查看Microsoft知识库中的文章:

2003907 有关 BizTalk 修补程序和 Service Pack 支持的信息