2

Microsoft 지원주기 내에서 사용하기 위해 BTS 2013에서 BTS 2009 프로젝트를 가져 와서 다시 컴파일하는 중입니다.BizTalk Server 2013 - ASMX에 대한 웹 참조 - BizTalk Expression Editor에서 사용할 수없는 응답의 요소

이것은 Windows XP의 BTS 2009, Visual Studio 2008을 사용하여 이전 개발자가 개발 한 후에 나중에 Windows 7로 옮겨졌습니다. 컴파일 된 솔루션은 Windows 2008 R2 서버에 배포됩니다. 이 연습에서는 Visual Studio 2013, Windows 7의 BizTalk Server 2013을 모두 최신 서비스 팩으로 사용하고 있습니다.

이 솔루션에는 스키마,지도, 파이프 라인 및 오케스트레이션에 대해 각각 하나씩 4 개의 프로젝트가 있습니다.

스키마 프로젝트는 .ASMX 웹 서비스를 '웹 참조'(서비스 참조 아님)로 참조합니다. 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; 

내 앞에서 문제는, 그 요소입니다 ErrorMessage, StackTrace 및 위의 XML에있는 모든 형제 요소는 BizTalk 식 편집기에서 사용할 수 없습니다. Intellisense는 GenerateSalesIDResult까지 작동하지만 그 이후의 XML 요소는 그렇지 않습니다.

오류 메시지는 - 내가 위해 무엇을해야 identifier 'StackTrace' does not exist in 'Msg_SalesIDReponse.GenerateSalesIDResult'; are you missing an assembly reference?

는이 문제를 해결하기 위해? 도와주세요.

주 - 내가 ASMX을 알고는 더 이상 사용하지 않는 것이 좋습니다,하지만 동등한 WCF 서비스로 변경하면

업데이트 1 :-) 내 부분에 비 기술적 많은 노력이 필요합니다 :

<?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에서 열 경우,하지 않는 시간

Reference.xsd은 다음과 같습니다 이 문제를 피하십시오.

답변

1

메시지가 강하게 입력되었으며 스키마 클래스가 제대로 생성되지 않아 하위 노드가 인식되지 않는 것으로 보입니다. 웹 참조 용으로 생성 된 스키마는 어떤 모습입니까?

Reference.xsd

당신은 웹 참조를 업데이트하고 프로젝트를 다시 시도 할 수 있습니다. Visual Studio를 닫았다가 다시 엽니 다.

업데이트 : 오케스트레이션 내부 메시지의 콘텐츠에 액세스하는 다른 방법에 대한

, 당신은 메시지 내용을 얻기 위해 XPath 표현식을 사용하여 시도 할 수 https://code.msdn.microsoft.com/windowsdesktop/BizTalk-Accessing-and-0cd434f7

를 보라.

그래서

Msg_OrderOutputForHTML.Exception = Msg_SalesRefIDResponse.GenerateSalesIDResult.ErrorMessage; 

Msg_OrderOutputForHTML.Exception = xpath(msgOutput3,"string(/*[local-name()='GenerateSalesIDResponse' and namespace-uri()='http://Company.Integration.SalesIDGenerator/']/*[local-name()='GenerateSalesIDResult']/*[local-name()='ErrorMessage'])") 
+0

같은 것을 당신은 내가 원래 질문에 대한 업데이트에 Reference.xsd의 내용을 추가 한 @Gruff 감사 할 것이다. 웹 참조를 제거하고 다시 추가했습니다. VS2013을 닫았다가 다시 열고, 솔루션과 프로젝트를 정리했습니다. 그 후에도 오류가 남아 있습니다. – FMFF

+0

불행히도 BizTalk 개발을 위해 아직 VS2013을 사용하지 않았습니다. 웹 참조 생성기가 Reference.map.cs 파일을 생성하고 액세스하려는 요소가'DistinguishedFieldAttribute'로 표시되어 있는지 확인할 수 있습니까? 나는 당신의 열독을 위해 메시지 내용에 접근하는 다른 방법으로 대답을 업데이트했다. – Gruff

+0

네,'Reference.map.cs' 파일에는'public partial class'가 있으며, 모든 요소는'Microsoft.XLANGs.BaseTypes.DistinguishedFieldAttribute()'로 표시되어 있습니다. – FMFF