2009-10-19 5 views
0

요청 응답 포트를 사용하여 웹 서비스를 호출하고 응답을 기다리는 오케스트레이션이 있습니다. 이것은 완벽하게 작동합니다.BizTalk 오케스트레이션 요청 - 응답 예외 처리

나는 이제 오류를 처리하기위한 테스트를 수행하고 있으며 0으로 나누기 예외를 throw하는 웹 서비스를 호출하고 있습니다. 오케스트레이션은 예외로 예외를 catch하지 않습니다. 그것은 내가 돌아 오는 SOAP 오류가 일반적인 문자열 인 것처럼 행동합니다.

그러나 요청 포트만으로이 동작을 테스트 한 결과 오케스트레이션의 catch 블록 내에서 0으로 나누기 예외가 발생했습니다. 요청 응답 포트에서도 단방향 포트가 아닌 웹 서비스 예외를 catch해야합니다.

+0

SOAP 또는 WCF 어댑터를 사용하고 있습니까? –

+0

WCF 어댑터를 사용하고 있습니다. –

답변

1

웹 서비스에서 오는 HTTP 응답에 문제가 있기 때문에 당신이보고있는 이러한 유형의 오류입니다. BizTalk는받은 응답을 구문 분석하여 헤더와 본문으로 분할 한 다음 헤더를 구문 분석합니다. 응답의 형식이 잘못된 HTTP 인 경우 이러한 종류의 오류가 발생합니다. SOAP librbary를 사용하여 응답 메시지를 해석하며 메시지가 나쁘기 때문에 불어납니다. 제로에 의한 나누기는 헤더에서 응답 길이를 정확하게 얻을 수 없기 때문에 발생할 수 있습니다.

NetMon과 같은 줄에 패킷 스니퍼를 배치하고 BizTalk로 실제로 보내지는 것을 확인합니다. HTTP를 준수하지 않으면 (사양을 찾아 보거나 인형 용으로 좋은 HTTP를 찾습니다) BizTalk는 예상치 못한 반응을 보일 수 있습니다.

행운을 빈다.

1

먼저 규칙에 따라 플레이해야합니다!

요청 - 응답 포트를 사용하여, 당신은 다음을 수행해야 할 수도 있습니다 동안 Biztalk에서 범위 블록 내에서 예외를 잡기 위해

...

  1. 실제에 0 재시도 횟수 설정 요청 - 응답 포트를 사용하여 바인딩합니다.
  2. 오케스트레이션 내의 논리 요청 - 응답 포트에서 전송 알림 플래그를 '전송'으로 설정합니다.
  3. "System.Web.Services.Protocols.SoapException"예외를 찾아서 처리하십시오.

희망이 도움이됩니다.

참고 : 코드 프로젝트에서 나의 기사에서보세요 Code Project

+1

한가지 문제를 제외하고 모든 것이 수행되었습니다. 동적 포트를 사용 중이며 포트에 재시도 횟수 속성이 없습니다 (또는 내가 그것을 보지 못했습니다) –