次の方法で共有


オーケストレーションの SOAP ヘッダーへのアクセス

定義されている SOAP ヘッダーと不明な SOAP ヘッダーに関して、オーケストレーション内の SOAP ヘッダー コンテキスト プロパティにアクセスできます。 プロパティ スキーマとコンテキスト プロパティの詳細については、「 プロパティ スキーマ」を参照してください。

定義されている SOAP ヘッダー コンテキスト プロパティ

オーケストレーションで定義された SOAP ヘッダー コンテキスト プロパティには、プロパティ スキーマが必要です。 プロパティ スキーマにはターゲット名前空間 http://schemas.microsoft.com/BizTalk/2003/SOAPHeaderが必要で、 Property Schema Base プロパティは MessageContextPropertyBase に設定されている必要があります。 プロパティ スキーマ内の各ルート要素名は、定義された SOAP ヘッダーのルート要素名と一致する必要があります。 その後、プロパティ スキーマの名前空間とプロパティ名を使用して、コンテキスト プロパティの値にアクセスできます。 プロパティ スキーマの名前空間は、上記のターゲット名前空間とは異なります。 プロパティ スキーマの名前空間には任意の文字列を指定できますが、通常は既定でプロジェクトの名前になります。

次の例は、プロパティ スキーマ名前空間、 SOAPHeader、およびプロパティ名 OrigDest の SOAP ヘッダー コンテキスト プロパティにアクセスする方法を示しています。

stringVar = requestMessageInstance(SOAPHeader.OrigDest);  

Note

定義されている SOAP ヘッダーは、"in" または "out" ヘッダーとして取り扱われます。 ウィザードで要求メッセージと応答メッセージに同じ SOAP ヘッダーが定義された場合、応答には受信値は自動的に返されません。 要求メッセージの SOAP ヘッダー コンテキスト プロパティを応答メッセージの SOAP ヘッダー コンテキスト プロパティに明示的にコピーする必要があります。

受信メッセージの SOAP ヘッダー コンテキスト プロパティのコピー

受信メッセージの SOAP ヘッダー コンテキスト プロパティは、応答メッセージの同じ SOAP ヘッダー コンテキスト プロパティにコピーできます。

次の例は、SOAP ヘッダー コンテキスト プロパティのコピーを示します。

ResponseMessageInstance(SOAPHeader.OrigDest) = RequestMessageInstance(SOAPHeader.OrigDest);  

SOAP 応答の SOAP ヘッダーを作成するときは、SOAP ヘッダーを正しく作成する必要があります。 SOAP アダプタでは SOAP ヘッダー コンテキスト プロパティの内容を検証しません。 応答 SOAP ヘッダーの値が誤っていた場合、SOAP アダプタでは Web サービスのコンシューマに応答メッセージを送信できません。

不明な SOAP ヘッダー コンテキスト プロパティ

不明な SOAP ヘッダー コンテキスト プロパティにはプロパティ スキーマは必要ありません。 このグローバル コンテキスト プロパティ SOAP にアクセスできます 。UnknownHeaders

次の例は、不明な SOAP ヘッダー コンテキスト プロパティ SOAP へのアクセスを示しています 。UnknownHeaders:

stringVar = RequestMessageInstance(SOAP.UnknownHeaders);  

コンテキスト プロパティに含まれている値は、XML データを含む文字列です。 このデータにアクセスする最も簡単な方法は、BizTalk 式エディターを メッセージの割り当て または の図形で使用し、 XmlDocument に文字列を読み込み、XPATH クエリを使用して特定のフィールドにアクセスすることです。 BizTalk 式エディターでの XML ドキュメントの作成の詳細については、「 XLANG-s 言語」を参照してください。

コンテキスト プロパティは、特定のメッセージに関連付けられています。 メッセージング エンジンは、要求メッセージからの既知の SOAP ヘッダーの値を応答メッセージに自動的にマップしません。 Web サービスの応答メッセージを作成するときは、SOAP ヘッダー値を具体的に設定する必要があります。 次のコマンドは、SOAP ヘッダー コンテキスト プロパティを設定する最も簡単な方法です。

ResponseMessageInstance(SOAPHeader.OrigDest) = "<?xml version="1.0" encoding="utf-16"?><OrigDest xmlns=\"http://SOAPHeaderSchemas.OrigDestSOAPHeader\"><Origination xmlns=\"\">Home</Origination><Destination xmlns=\"\">Work</Destination> </OrigDest>"  

これを実現するには、 XmlDocument を作成し、 XmlDocument の文字列値をコンテキスト プロパティに書き込みます。

Note

SOAP の場合 。UnknownHeaders プロパティが null の場合、BizTalk は SOAP 要求で受信した不明なヘッダーを SOAP 応答に自動的に返します。 SOAP の場合 。応答メッセージの UnknownHeaders コンテキスト プロパティが null でない場合、BizTalk はその値を SOAP 応答に返します。

参照

公開済み Web サービスでの SOAP ヘッダー