我正在导入和重新编译 BTS 2013 中的 BTS 2009 项目,以保持在 Microsoft 支持生命周期内。
这是由前开发人员首先在 Windows XP 上使用 BTS 2009、Visual Studio 2008 开发的,后来转移到 Windows 7。编译后的解决方案部署在 Windows 2008 R2 服务器中。对于本练习,我在 Windows 7 上使用 Visual Studio 2013、BizTalk Server 2013 和最新的 Service Pack。
该解决方案有四个项目——模式、地图、管道和编排各一个。
架构项目引用 .ASMX Web 服务,作为“Web 参考”(不是服务参考)。ASMX 的响应 XML 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GenerateSalesIDResponse xmlns="http://Company.Integration.SalesIDGenerator/">
<GenerateSalesIDResult>
<SalesID>string</SalesRefID>
<SalesIDInASCII>string</SalesRefIDInASCII>
<IsError>boolean</IsError>
<ErrorMessage>string</ErrorMessage>
<StackTrace>string</StackTrace>
</GenerateSalesIDResult>
</GenerateSalesIDResponse>
</soap12:Body>
</soap12:Envelope>
在其中一个编排中,有一个消息分配形状,其表达式如下:
Msg_OrderOutputForHTML.Exception = Msg_SalesRefIDResponse.GenerateSalesIDResult.ErrorMessage;
Msg_OrderOutputForHTML.StackTrace = Msg_SalesRefIDResponse.GenerateSalesIDResult.StackTrace;
摆在我面前的问题是,上述 XML 中的元素ErrorMessage
及其StackTrace
所有同级元素都不适用于 BizTalk 表达式编辑器。对于之后的任何 XML 元素, Intellisense 一直有效GenerateSalesIDResult
,但之后无效。
错误消息是 -identifier 'StackTrace' does not exist in 'Msg_SalesIDReponse.GenerateSalesIDResult'; are you missing an assembly reference?
我应该怎么做才能解决这个问题?请帮忙。
注意 - 我知道不再推荐使用 ASMX,但是将其更改为等效的 WCF 服务将需要我做大量的非技术工作 :-)
更新1:
Reference.xsd 如下所示:
<?xml version="1.0"?>
<xs:schema xmlns:tns="http://Company.Integration.SalesIDGenerator/" elementFormDefault="qualified" targetNamespace="http://Company.Integration.SalesIDGenerator/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="SalesIDGen" nillable="true" type="tns:SalesIDGen" />
<xs:complexType name="SalesIDGen">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="SalesID" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="SalesIDInASCII" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" name="IsError" type="xs:boolean" />
<xs:element minOccurs="0" maxOccurs="1" name="ErrorMessage" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="StackTrace" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
更新2: 如果我在VS2008中打开同一个项目,没有这个问题。