오케스트레이션 런타임 오류 디버깅
이 섹션에서는 오케스트레이션과 관련된 런타임 문제 해결에 도움이 되는 질문과 대답을 제공합니다.
부모가 방금 시작한 자식 오케스트레이션으로 보낼 때 가끔 등록 오류가 표시되는 이유는?
등록 오류 "등록을 찾을 수 없습니다"는 경합 상태의 결과입니다. 프로세스가 수행되는 특정 순서에 따라 프로세스 결과가 달라지는 경우 경합 상태가 발생합니다. 이 경우 부모가 보낸 메시지를 받을 수 있는 시간 내에 자식 오케스트레이션이 시작되지 않았을 때 이 상태가 발생합니다.
이 문제를 방지하기 위해 자식 오케스트레이션은 시작 시 메시지를 다시 부모에게 보낼 수 있으며 메시지를 받을 준비가 되어 있습니다. 이런 방식으로, 자식을 시작한 부모 오케스트레이션은 메시지를 보내기 전에 받는 사람이 있음을 알고 있습니다.
논리 포트에 동적 송신 포트를 연결할 때 오류가 표시되는 이유는?
동적 포트는 할당된 포트의 모든 속성과 특징을 상속하지 않습니다. 동적 포트는 주소만 가져오며 논리 포트와 연결된 다른 정보를 상속하지 않습니다.
예를 들어 배달 알림이 전송됨인 논리 포트에 동적 송신 포트를 연결하면 런타임에서 배달 알림을 배달하지 않습니다. XLANGs 런타임은 실제로 포트가 해당 방식으로 정적 설정된 경우에만 배달 알림을 수신 대기합니다.
참고
XLANGs에서 포트는 정적으로 구성된 대로만 동작합니다.
사용자 지정 구성 요소가 포함된 오케스트레이션을 배포한 후 내 응용 프로그램을 실행하려고 하면 "파일 또는 어셈블리 이름이나 해당 종속성 중 하나를 찾을 수 없습니다" 오류가 표시되는 이유는?
이 오류는 일반적으로 BizTalk 오케스트레이션 엔진에서 사용자 지정 구성 요소를 찾을 수 없음을 의미합니다. 응용 프로그램을 호스팅하는 컴퓨터의 GAC(전역 어셈블리 캐시)에 BizTalk 응용 프로그램에 포함된 모든 어셈블리를 설치해야 합니다.
오케스트레이션을 통해 웹 서비스에 문서를 전송할 때 "AssemblyName 컨텍스트 속성이 잘못되었습니다" 오류가 발생합니다.
문제
오케스트레이션을 통해 웹 서비스에 문서를 전송하면 "AssemblyName 컨텍스트 속성이 잘못되었습니다" 오류가 발생합니다.
원인
BizTalk 응용 프로그램은 원래 오케스트레이션 개입 없이 "메시징" 방법을 사용하여 디자인되었습니다. 이 유형의 솔루션은 수신 시 문서가 송신 포트로 전달되도록 송신 포트 필터를 사용하여 수신 포트와 송신 포트를 연결합니다. 나중에 송신 포트에 바인딩된 오케스트레이션을 포함하도록 솔루션이 수정되었습니다.
해결 방법
송신 포트의 필터를 제거합니다. 오케스트레이션에 바인딩된 송신 포트에 필터를 적용하면 메시지가 오케스트레이션을 무시하여 컨텍스트 속성 오류가 발생하는 경우가 많습니다.
오케스트레이션에서 다중 파트 MIME 메시지를 처리할 때 "WrongBodyPartException" 오류가 발생합니다.
문제
오케스트레이션에 다중 파트 MIME 메시지를 수신하면 WrongBodyPartException 예외가 발생합니다.
원인
이 오류는 파트 순서가 잘못 지정되었거나 메시지가 지정한 파트 위치를 따르지 않는 경우에 발생할 수 있습니다. 예를 들어 세 번째 파트가 본문이라고 지정하지만 세 번째 위치에 헤더 파트가 있는 상태로 메시지가 도착하는 경우입니다.
해상도
본문 인덱스 설정이 올바른지 확인한 다음 어댑터를 통해 도착하는 모든 메시지가 설정과 일치하는지 확인합니다. 오케스트레이션을 중지하지만 등록된 상태로 유지하면 오케스트레이션 내부에서 실패하는 MIME 메시지의 내용을 검사할 수 있습니다. 이렇게 하면 관리 콘솔을 사용하여 메시지를 검사하고 파트 순서를 확인할 수 있도록 메시지가 강제로 게시됩니다.
다중 파트 MIME 메시지 파트를 찾을 수 없습니다.
문제
인덱스 값이 0보다 큰 MIME 메시지 파트를 검색하려고 하면 BizTalk Server 런타임에서 "index = <value>가 있는 다중 파트 메시지를 찾을 수 없습니다"와 유사한 오류가 발생합니다.
원인
이 오류의 가장 일반적인 원인은 다음과 같습니다.
MIME 메시지의 파트 수가 예상보다 적습니다.
MIME 메시지를 완전히 구문 분석할 수 없습니다.
해상도
사용자 코드가 메시지 소스에서 예상된 범위 내에 있는 메시지 파트만 검색하도록 하면 이 문제를 해결할 수 있습니다. 구문 분석 문제의 경우 원래의 MIME 메시지가 구조상 올바르고 제대로 생성되었는지 확인해야 합니다. 가끔 구문 분석 문제가 발생하는 경우 오케스트레이션에 적절한 예외 핸들러를 설정해야 합니다.
동적 송신 포트를 사용하여 보내는 경우 "FILE 송신 어댑터가 파일을 쓰기용으로 열 수 없습니다." 오류가 표시됩니다.
문제
동적 송신 포트를 사용하여 보낼 때 BizTalk Server 이벤트 로그에 "FILE 송신 어댑터가 쓰기 위해 파일< 파일 이름을> 열 수 없습니다." 오류가 표시됩니다.
이 문제는 BTS에서 발생 합니다. OutBoundTransportLocation 속성은 오케스트레이션 식에 정의되고 파일 전송이 지정됩니다. 예를 들어 다음 식으로 인해 런타임에 이 오류가 발생합니다.
Message2=Message1;
Message2(BTS.OutboundTransportLocation) = "file:///c:/test/out";
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);
- 또는 -
Message2=Message1;
Message2(BTS.OutboundTransportLocation) = "file://mymachine/test/out";
MySendPort(Microsoft.XLANGs.BaseTypes.Address)=Message2(BTS.OutboundTransportLocation);
원인
이 문제는 런타임 시 오케스트레이션 엔진이 지정된 URL에서 "file://" 텍스트를 제거하기 때문에 발생합니다. 따라서 위의 예제를 사용할 경우 "file:///c:/test/out"은 \c:\test\out으로 평가되고 "file://mymachine/test/out"은 mymachine\test\out으로 평가됩니다.
해상도
BTS의 URL을 지정하는 경우 식의 OutBoundTransportLocation 속성은 필요에 따라 "/" 문자를 추가하거나 제거합니다. BTS 위의 예제를 사용합니다 . OutBoundTransportLocation 속성은 "file://c:/test/out"로 정의되어야 합니다. 이 속성은 c:\test\out 또는 "file:////mymachine/test/out"로 평가되며\\mymachine\test\out으로 평가됩니다.