SOAP 送信アダプターを使用して Web サービスを呼び出します。 SOAP 送信アダプターは、BizTalk メッセージ オブジェクトのメッセージ コンテキストを読み取ってプロキシ名を取得し、関連付けられている外部 Web サービス プロキシを呼び出します。
SOAP 送信アダプターのクライアント認証
SOAP 送信アダプターは、次のいずれかの認証の種類を使用して、移行先サーバーで認証を行います。
アノニマス。 既定の設定です。
基本。 SOAP 接続は、ユーザー名とパスワードをプレーン テキストで送信します。
ダイジェスト。 SOAP 接続は、暗号化された形式でユーザー名とパスワードを送信します。
Kerberos または NTLM。 ユーザー名もパスワードもSOAP接続経由では送信されない。 SOAP アダプターは、この認証の種類に対して SOAP 送信アダプターを実行するプロセスの資格情報を常に使用します。
さらに、SOAP 送信アダプターは、サーバーが要求または受け入れる場合に、クライアントの Secure Sockets Layer (SSL) 証明書を Web サーバーに提供できます。
Enterprise Single Sign-On (SSO) を有効にした場合、SOAP 送信アダプターが SSOTicket プロパティへの要求を含むメッセージを受信すると、アダプターは SSO サーバーに接続してチケットを検証して利用します。 SOAP アダプターがチケットを検証すると、暗号化が解除され、関連システムの資格情報が資格情報ストアから取得されます。 その後、SOAP アダプターは資格情報を使用して関連システムに接続し、SOAP 要求が処理されます。
SOAP 送信アダプターのクライアント証明書
SOAP 送信アダプターは、クライアント証明書を受け入れるか必要とするサーバーとのセキュリティで保護された接続を確立できます。 クライアント証明書を指定した場合、SOAP 送信アダプターは、クライアント証明書を要求または受け入れるサーバーとの接続時に証明書を使用します。 クライアント証明書を指定せず、宛先サーバーにクライアント証明書が必要な場合、SOAP 送信アダプターはメッセージの送信に失敗し、標準の再試行ロジックに従います。
SOAP 送信アダプターは、BizTalk Server プロセスが実行されているアカウントの個人用ストアのクライアント証明書を使用します。 SOAP アダプターは、拇印で証明書を指定します。 SOAP 送信アダプターが何らかの理由で証明書の読み込みに失敗した場合、送信していたメッセージは中断されます。
HTTP または SOAP アダプターによって失敗した転送に対して生成された否定受信確認 (NACK) メッセージ
メッセージが正常に送信されると、配信通知が有効になっている場合、BizTalk メッセージング エンジンは関連する受信確認 (ACK) メッセージを MessageBox データベースに発行します。 同様に、BizTalk メッセージング エンジンによってメッセージが中断された場合、またはオーケストレーション がオーケストレーション エンジンによって中断されると、BizTalk Server は関連する否定受信確認 (NACK) メッセージをメッセージ ボックスに発行します。 NACK メッセージには、コンテキスト プロパティと、SOAP エラーで構成されるメッセージ本文部分が含まれています。 HTTP または SOAP アダプターからの送信に失敗したために NACK メッセージが生成された場合、SOAP エラーには、宛先 Web サーバーからの応答の 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 要素は 48 KB に制限されています。 Headers 要素は、制限を超えることなく、最も近い完全なヘッダー値のペアに丸められます。 Body 要素は 48 KB に切り捨てられます。
注
NACK メッセージと ACK メッセージは、一致するサブスクリプションがない場合は破棄されます。 NACK メッセージと ACK メッセージは、メッセージング エンジンによって中断されません。
NACK メッセージをサブスクライブするには、次のいずれかの操作を行います。
適切なメッセージ コンテキスト プロパティのフィルターを使用して送信ポートを作成します。 メッセージ受信確認に関連するものを含むシステム メッセージ コンテキスト プロパティ の一覧については、 UI ガイダンスおよび開発者 API 名前空間リファレンス のメッセージ コンテキスト プロパティを参照してください。
配信通知 = 送信済みでマークされたオーケストレーション ポートから送信します。 オーケストレーション ポートが 配信通知 = 送信済みとしてマークされている場合、オーケストレーションは送信されたメッセージの ACK または NACK を受信するまで待機します。 NACK が生成されると、その NACK はオーケストレーションにルーティングされ、オーケストレーションは DeliveryFailureException をスローします。 DeliveryFailureException は、NACK メッセージ本文に含まれる SOAP エラーから逆シリアル化されます。 オーケストレーションに返される 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>