SOAP 송신 어댑터
SOAP 송신 어댑터를 사용하여 웹 서비스를 호출합니다. SOAP 송신 어댑터는 BizTalk 메시지 개체의 메시지 컨텍스트를 읽어 프록시 이름을 가져오고 관련된 외부 웹 서비스 프록시를 호출합니다.
SOAP 송신 어댑터는 다음 인증 유형 중 하나를 사용하여 대상 서버에 인증합니다.
익명 기본 설정
기본. SOAP 연결이 사용자 이름 및 암호를 일반 텍스트로 보냅니다.
다이제스트. SOAP 연결에서 사용자 이름과 암호를 암호화된 형식으로 보냅니다.
그러면 프로토콜(Kerberos 또는 NTLM)이 화살표 위에 표시됩니다. 사용자 이름 또는 암호가 SOAP 연결을 통해 보내지지 않습니다. SOAP 어댑터는 이 인증 유형에 대해 항상 SOAP 송신 어댑터가 실행되는 프로세스의 자격 증명을 사용합니다.
또한 SOAP 송신 어댑터는 서버에 클라이언트 SSL(Secure Sockets Layer) 인증서가 필요하거나 허용하는 경우 웹 서버에 인증서를 제공할 수 있습니다.
Enterprise SSO(Single Sign-On)를 사용하도록 설정한 경우 SOAP 송신 어댑터가 SSOTicket 속성에 대한 요청이 포함된 메시지를 받으면 어댑터는 SSO 서버에 연결하여 티켓의 유효성을 검사하고 사용합니다. SOAP 어댑터가 티켓의 유효성을 검사한 후 암호가 해독되며 관련 시스템의 자격 증명이 자격 증명 저장소에서 검색됩니다. 그런 다음 SOAP 어댑터가 자격 증명을 사용하여 관련 시스템에 연결하고 SOAP 요청이 처리됩니다.
SOAP 송신 어댑터는 클라이언트 인증서를 허용하거나 필요로 하는 서버에 대해 보안 연결을 설정할 수 있습니다. 클라이언트 인증서를 지정하는 경우 SOAP 송신 어댑터는 클라이언트 인증서가 필요하거나 허용하는 서버에 연결할 때 인증서를 사용합니다. 클라이언트 인증서를 지정하지 않고 대상 서버에 클라이언트 인증서가 필요한 경우에는 SOAP 송신 어댑터가 메시지를 보내지 않고 표준 재시도 논리를 따릅니다.
SOAP 송신 어댑터는 BizTalk Server 프로세스가 실행 중인 계정의 개인 저장소에서 클라이언트 인증서를 사용합니다. SOAP 어댑터는 손 도장(Thumbprint)으로 인증서를 지정합니다. 어떤 이유로든 SOAP 송신 어댑터가 인증서를 로드하지 못하면 보내는 메시지가 일시 중단됩니다.
메시지가 성공적으로 전송되면 BizTalk 메시징 엔진은 배달 알림이 사용하도록 설정된 경우 관련된 승인(ACK) 메시지를 MessageBox 데이터베이스에 게시합니다. 마찬가지로 BizTalk 메시징 엔진에서 메시지를 일시 중단하거나 오케스트레이션 엔진에서 오케스트레이션을 일시 중단하면 BizTalk Server 연결된 NACK(부정 승인) 메시지를 MessageBox에 게시합니다. NACK 메시지에는 SOAP 오류로 구성된 메시지 본문과 컨텍스트 속성이 포함됩니다. HTTP 또는 SOAP 어댑터의 전송 실패로 인해 NACK 메시지가 생성되는 경우 SOAP 오류에는 대상 웹 서버의 응답의 Headers 요소와 Body 요소가 포함됩니다. 다음은 실패한 SOAP 전송에 대해 생성되는 NACK에 포함된 SOAP 오류의 예입니다.
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP:Body>
<SOAP:Fault>
<faultcode>Microsoft BizTalk Server Negative Acknowledgment</faultcode>
<faultstring>An error occurred while processing the message, refer to the details section for more information</faultstring>
<faultactor>http://localhost/receivestandard.asp</faultactor>
<detail>
<ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd">
<NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID>
<ErrorCode>0x80131600</ErrorCode>
<ErrorCategory>0</ErrorCategory>
<ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription>
<ErrorDetail>
<HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd">
<Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers>
<Body>We could not locate the page you requested. Please check the URL.</Body>
</HttpErrorDetail>
</ErrorDetail>
</ns0:NACK>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>
참고
Headers 요소와 Body 요소는 48KB로 제한됩니다. Headers 요소는 제한을 초과하지 않고 가장 가까운 전체 헤더 값 쌍으로 반올림됩니다. Body 요소는 48KB로 잘립니다.
참고
NACK 및 ACK 메시지는 일치하는 등록이 없는 경우 삭제되며, NACK 및 ACK 메시지는 메시지 엔진에서 일시 중단되지 않습니다.
NACK 메시지에 등록하려면 다음 중 하나를 수행하면 됩니다.
해당하는 메시지 컨텍스트 속성용 필터를 포함하는 송신 포트를 만듭니다. 메시지 승인과 관련된 시스템 메시지 컨텍스트 속성 목록은 UI 지침 및 개발자 API 네임스페이스 참조 의 메시지 컨텍스트 속성을 참조하세요.
배달 알림 = 전송됨으로 표시된 오케스트레이션 포트에서 보냅니다. 오케스트레이션 포트가 배달 알림 = 전송됨으로 표시된 경우 오케스트레이션은 전송된 메시지에 대해 ACK 또는 NACK를 받을 때까지 기다립니다. NACK이 생성되는 경우에는 오케스트레이션으로 라우팅되며 오케스트레이션은 DeliveryFailureException을 throw합니다. DeliveryFailureException은 NACK 메시지 본문 내에 포함된 SOAP 오류에서 deserialize됩니다. 오케스트레이션으로 반환되는 SOAP 오류에서 예외 메시지 문자열을 검색하려면 DeliveryFailureException을 SoapException으로 캐스팅한 다음 SOAP 정보 섹션에서 InnerXml에 액세스합니다. 다음 코드 샘플에서 이와 같이 출력을 생성하는 방법을 보여 줍니다.
// Cast the DeliveryFailureException to a SoapException… System.Web.Services.Protocols.SoapException se = (System.Web.Services.Protocols.SoapException)e.InnerException; System.Diagnostics.Trace.WriteLine(se.Detail.InnerXml); //e is an Microsoft.XLANGs.BaseTypes.DeliveryFailureException //object type created in an Exception handler
위의 코드 샘플에서는 다음과 비슷한 XML 조각을 반환합니다.
<ns0:NACK Type="NACK" xmlns:ns0="http://schema.microsoft.com/BizTalk/2003/NACKMessage.xsd"> <NAckID>{4E646707-03AA-4493-95C7-A64B09E2987D}</NAckID> <ErrorCode>0x80131600</ErrorCode> <ErrorCategory>0</ErrorCategory> <ErrorDescription>The remote server returned an error: (404) Not Found.</ErrorDescription> <ErrorDetail> <HttpErrorDetail xmlns="http://schema.microsoft.com/BizTalk/2006/HttpErrorDetails.xsd"> <Headers>Server: Microsoft-IIS/5.1 Date: Wed, 21 Apr 2005 00:27:47 GMT X-Powered-By: ASP.NET Connection: close Content-Type: text/html Content-Length: 67 </Headers> <Body>We could not locate the page you requested. Please check the URL.</Body> </HttpErrorDetail> </ErrorDetail> </ns0:NACK>