Я нахожусь в процессе импорта и перекомпиляции проекта BTS 2009 в BTS 2013, чтобы оставаться в рамках жизненного цикла поддержки Microsoft.
Это было разработано бывшими разработчиками, использующими BTS 2009, Visual Studio 2008 сначала на Windows XP, а затем перенесено на Windows 7. Скомпилированное решение развертывается на сервере Windows 2008 R2. Для этого упражнения я использую Visual Studio 2013, BizTalk Server 2013 в Windows 7 с последними пакетами обновления.
В решении есть четыре проекта - по одному для схем, карт, конвейеров и оркестровок.
Проект схемы ссылается на веб-службу .ASMX как на «веб-ссылку» (а не на ссылку на службу). XML ответа ASMX выглядит так:
<?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;
Проблема, стоящая передо мной, заключается в том, что элементы ErrorMessage
, StackTrace
и все их родственные элементы в приведенном выше XML недоступны для редактора BizTalk Expression. Intellisense работает до GenerateSalesIDResult
, но не после этого, для любого из последующих элементов XML.
Сообщение об ошибке - 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, не имеет этой проблемы.