HTTP 受信アダプター
HTTP 受信アダプターの受信場所は、BizTalk Server 管理コンソールで構成された個別の URL です。
HTTP 受信アダプターは、クライアントからの非同期送信用にも同期送信用にも構成できます。 非同期送信は一方向の送信、同期通信は双方向または要求 - 応答の送信です。
受信要求の認証および承認には、IIS セキュリティを使用します。
HTTP GET 要求および HTTP POST 要求
HTTP 受信アダプターは、HTTP POST 要求または HTTP GET 要求の 2 つの異なる方法でメッセージを受信できます。
HTTP 受信アダプターが HTTP POST 要求でメッセージを取得すると、次のような一連のイベントが発生します。
BizTalk Server で構成された URL は、受信場所で新しいメッセージを受信します。
受信アダプターは、メッセージをサーバーに送信できるように、BizTalk メッセージ オブジェクトを作成します。
受信アダプターは、1 つの部分 (本文部分) のみを含む BizTalk Message オブジェクトを作成します。
メッセージの読み取りおよびサーバーへの送信が正常に完了した後、HTTP 受信アダプターからクライアントに、要求が受理されたことを示す HTTP コード 202 が返されます。
必要に応じて、HTTP 受信アダプターは、HTTP 応答でメッセージの関連付けトークンを送信できます。 この関連付けトークンは、BizTalk Server 内のメッセージを表します。 HTTP 受信場所が要求 - 応答のポートの場合、アダプターから、応答メッセージと共に成功コード 200 が返されます。
HTTP 受信アダプターで HTTP GET 要求からのメッセージを処理する場合、受信アダプターによって、BizTalk メッセージ オブジェクトが作成され、HTTP GET 要求のデコードされたクエリ文字列が BizTalk メッセージのボディ部に配置されます。 HTTP アダプターは、次のアルゴリズムを使用して、BizTalk メッセージのボディ部に配置されるクエリ文字列を選択します。
HTTP 受信アダプターで HTTP GET 要求を受信する場合、受信 URI 文字列を 2 つに分割します。その際、区切り記号として疑問符 (?) を使用します。
URI 文字列の最初の部分 (疑問符区切り記号の前の部分) は、メッセージ コンテキストの InboundTransportLocation プロパティにコピーされます。 InboundTransportLocation プロパティは、メッセージを受信した場所BizTalk Server一意に識別します。 エンジンは、このプロパティを使用して、メッセージ対して稼働する受信場所を判別します。
HTTP アダプターは、残りの URI 文字列、つまり、区切り記号である疑問符より後の部分を取得し、デコードして BizTalk メッセージのボディ部にコピーします。
空の HTTP GET または HTTP POST 操作は、HTTP 受信アダプターで受信されると、拒否されます。
HTTP 受信アダプターによる GET 要求の処理
HTTP GET 要求が受け取ったメッセージを HTTP 受信アダプターで処理する方法の例を次に示します。 この例では、HTTP 受信アダプターが次の 2 つの受信場所で構成されていると想定しています。
/vroot/BTSHTTPReceive.dll
/vroot/BTSHTTPReceive.dll?LocationID=1
クライアントは次の HTTP GET 要求を受け取ります。
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1
HTTP 受信アダプターによって行われる操作は次のとおりです。
メッセージ コンテキストの InboundTransportLocation プロパティを /vroot/BTSHTTPReceive.dll に設定し、BizTalk Message オブジェクトの本文部分を LocationID=1 に設定します。
クライアントは次の HTTP GET 要求を受け取ります。
http://servername/vroot/BTSHTTPReceive.dll?LocationID=1&MyParam=My%20Value
HTTP 受信アダプターによって行われる操作は次のとおりです。
InboundTransportLocation プロパティを /vroot/BTSHTTPReceive.dll に設定し、BizTalk Message オブジェクトの本文部分を LocationID=1&MyParam=My Value に設定します。
クライアントは次の HTTP GET 要求を受け取ります。
http://servername/vroot/BTSHTTPReceive.dll
HTTP 受信アダプターによって実行されるアクションは、次のように + です。
HTTP GET 要求の形式が誤っているため、要求を拒否します。
HTTP 受信アダプターのバッチ処理のサポート
HTTP 受信アダプターは、メッセージをバッチ単位でサーバーに送信します。 サーバーへのメッセージ送信に使用されるバッチのサイズは、HTTP アダプターの受信ハンドラーで構成できます。
HTTP 受信アダプターによる、失敗した要求の中断のサポート
BizTalk Server HTTP 受信アダプターには、受信パイプラインエラー、マッピングエラー、またはルーティングエラーが原因で受信処理が失敗した場合の HTTP 要求の動作を制御するための構成設定として、失敗した要求の中断があります。 この設定には、次の 2 つの有効値があります。
不正解です。 これが既定の設定です。 HTTP 受信アダプターは、受信パイプライン、マッピング、またはルーティングの障害によって受信処理に失敗したメッセージを破棄します。 さらに、エラー状態コード 401 または 500 をクライアントに送信します。
正解です。 HTTP 受信アダプターは、受信パイプライン、マッピング、またはルーティングの障害によって着信処理に失敗したメッセージを中断します。 一方向の受信ポートの場合、 承認済み 状態コード 202 がクライアントに送信されます。 双方向受信ポートの場合、 エラー 状態コード 500 がクライアントに送信されます。
HTTP 受信アダプターのチャンク エンコードのサポート
HTTP 受信アダプターは、チャンク エンコードされたメッセージ本文を含む HTTP 要求を受け入れます。 受信アダプターでは、本文のサイズが 4 KB を超えると、チャンク エンコードを使用して応答メッセージを送信します。 チャンク エンコードは、「HTTP アダプターの構成とチューニング パラメーター」で説明されている DWORD レジストリ エントリを設定することで無効にすることができます
HTTP 受信アダプターのクライアント証明書
クライアント証明書とのセキュリティで保護された接続が HTTP 受信場所に使用されるたびに、HTTP 受信アダプターは、Microsoft インターネット インフォメーション サービス (IIS) からクライアント証明書の拇印を取得して、その場所で HTTPS 経由で受信したすべてのメッセージのメッセージ コンテキストに追加します。 HTTP 受信アダプターでは、次のシステム プロパティを設定します。
SourcePartyEvidenceQualifier = "Certificate"
SourcePartyEvidence = <certificate thumbprint>
HTTP 受信アダプターによって返される状態コード
次の一覧に、HTTP 受信アダプターによって返される状態コードを示します。
200 OK。 アダプターは、正常に要求メッセージを処理して応答を生成しました。 アダプターは、HTTP 要求 - 応答ポートからの HTTP 応答でこの状態コードを返します。
202 メッセージが受理されました : アダプターがメッセージをサーバーに正常に送信したか、一方向の要求が保留されました。 アダプターは、一方向の HTTP 受信ポートからの HTTP 応答でこの状態コードを返します。
401 アクセスは拒否されました : HTTP 要求は認証が必要な受信ポートで受信され、そのメッセージのセキュリティ チェックに失敗しました。 たとえば、パーティが解決されなかったり、メッセージの暗号化が解除されていません。
500 内部サーバー エラー : HTTP 要求を処理する際に一般エラーが発生しました。 構成設定の [失敗した要求の中断] が双方向の受信ポートに対して True に設定されていない限り、メッセージは BizTalk Server によって中断されません。