我的场景看起来很简单:
我们有一个具有某种格式的文件,myfileddmmyyhhss.txt,在文件中我们有这样的内容:
H|3 |20110607235508
V|M006 |HAB8753 |NY|PAS|20151123|232155|M||
V|M006 |HAB8752 |NY|PAS|20151123|232155|M||
V|M006 |HAB8751 |NY|PAS|20151123|232155|M||
T|3 |20110607235508
还使用 sql 适配器,我们生成了用于执行存储过程的架构。
<?xml version="1.0" encoding="utf-16" ?>
- <xs:schema xmlns="http://SqlAdapterFile" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://SqlAdapterFile" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:annotation>
- <xs:appinfo>
<msbtssql:sqlScript value="exec [sp_insertFile] @fileName=" "" xmlns:msbtssql="http://schemas.microsoft.com/BizTalk/2003" />
</xs:appinfo>
</xs:annotation>
- <xs:element name="fileRequest">
+ <xs:annotation>
- <xs:appinfo>
- <properties xmlns="http://schemas.microsoft.com/BizTalk/2003">
<property distinguished="true" xpath="/*[local-name()='fileRequest' and namespace-uri()='http://SqlAdapterFile']/*[local-name()='sp_insertFile' and namespace-uri()='http://SqlAdapterFile']/@*[local-name()='fileName' and namespace-uri()='']" />
</properties>
</xs:appinfo>
</xs:annotation>
+ <xs:complexType>
- <xs:sequence>
- <xs:element name="sp_insertFile">
- <xs:complexType>
<xs:attribute name="fileName" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="fileResponse">
- <xs:complexType>
- <xs:sequence>
<xs:element name="Success" type="xs:anyType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
使用平面文件模式向导我们创建了与此问题无关的模式。 现在我们需要创建一条应重定向到发送端口的消息,该消息只有一个带有文件名的子元素,我们创建了一个映射,但没有真正的映射,因为我们使用的是常量。正如您所看到的,字段之间没有映射,我们使用 value 属性设置一个固定值,看看是否可以使其工作。 右侧架构是上面粘贴的架构。
但是我们遇到了这个错误,我们所需要的只是发送位置中的 XML,上面有硬编码的文件名。
xlang/s 引擎事件日志条目:未捕获的异常(请参阅“内部 异常'下面)已暂停服务实例 'BizTalkNyCase.BizTalk_Orchestration1(ac1a86a0-9cc1-4850-d5f1-236b0663b4da)'。 服务实例将保持暂停状态,直到管理 恢复或终止。 如果恢复,实例将从其继续 最后持久化的状态,可能会重新抛出相同的意外异常。 InstanceId:db35db6f-f14d-44ca-bea7-a3f747b550d5 形状名称:Send_2 ShapeId:81933178-7b3c-49c2-a0b1-0cce3d4aa6ec 抛出异常: 段 1,进度 16 内部异常:根元素丢失。 异常类型:XmlException 源:System.Xml 目标站点:Void Throw(System.Exception) 以下是堆栈跟踪: 识别异常发生的位置
我的猜测是,为 sp_insertFile 元素生成架构,您的类型名将是相同的。但是,当尝试实例化该类型时,BizTalk 并没有真正接受它。相反,您会收到“根节点丢失”异常。
至少,这是我今天的问题。从 typename 中删除 _ (但让模式节点名称保持不变),解决了我的问题。