次の方法で共有


Web サービスを使用する際の考慮事項

ここでは、Web サービスを使用する際に考慮すべき情報について説明します。

パラメータ名での 2 つのアンダースコア文字の使用

Web メソッドのパラメータ名を "__" (2 つのアンダースコア文字) で始めることはできません。 2 つのアンダースコア文字で始まる名前を使用すると、XLANG/s でサポートされない (使用できない) Web メッセージ部分が作成される場合があります。

any 要素と anyAttribute 属性は Web メソッドでサポートされない

Web メソッドのスキーマでは、 任意 の要素または anyAttribute 属性を使用できません。

XLANG/s キーワードの使用

Web サービス名または Web メソッド名に XLANG/s のキーワードを使用することはできません。 Web サービス名または Web メソッド名で XLANG/s のキーワードを使用すると、Web サービスを追加するときにコンパイル エラーが発生します。 XLANG/s 言語の予約語の一覧については、「 XLANG-s 予約語」を参照してください。

パラメータの型は XLANG/s でサポートされる必要がある

Web メソッドにおいて、XLANG/s でサポートされていないパラメータの型を使用すると、コンパイル エラーが発生します。 たとえば、BizTalk Server では 1 次元配列のスキーマの種類で構成されるパラメータはサポートされていません。 また、BizTalk Server では多次元配列もサポートされていません。 XLANG/s 言語がBizTalk Serverで予約する単語の一覧については、「XLANG-s 予約語」を参照してください。

C# のキーワードまたは識別子を含む Web 参照を追加することによって発生するコンパイル エラーの回避

サービス参照の追加を使用して BizTalk プロジェクトにサービス参照を追加する場合、BizTalk Serverは、各 Web メソッドを呼び出すために必要なスキーマの種類をスキーマに変換します。 変換後のスキーマは Reference.xsd に追加されます。 スキーマに C# のキーワードと同じ要素名や C# の識別子として有効でない要素名が含まれる場合は、ランタイム エラーが発生することがあります。 ランタイム エラーを回避するには、使用する Web サービスに C# のキーワードと同じ要素名や C# の識別子として無効な要素名を含めないようにしてください。

複数のサービス/ポートの種類の定義はサポートされていません

BizTalk Server では、単一のサービスおよびポートの種類の定義を含む Web サービス ファイルを追加することができます。 複数のサービスまたはポートの種類の定義を含む WSDL ファイルを追加すると、次のエラーが発生することがあります。

"BizTalk ファイルを生成できませんでした。 オブジェクト参照がオブジェクト インスタンスに設定されていません。

Web サービスで公開される配列の使用に関するサポート

BizTalk Server では、BizTalk Web サービス以外の Web サービスによって公開される 1 次元のジャグ配列を使用できます。 Web サービス配列を使用する方法の詳細については、「Web サービス配列 を使用する方法」を参照してください。

Note

多次元配列の構文はサポートされていません。 たとえば、「 MyArray[1,5] 」のように入力します。

Note

BizTalk Serverでは、Web サービスによって公開される DataSet オブジェクトの配列の使用はサポートされていません。 XLANG/s サブサービスでは、.NET DataSet クラスがネイティブでサポートされます。ただし、.NET DataSet オブジェクトの配列を公開する Web サービスへの Web 参照を含む BizTalk プロジェクトを作成した場合は、プロジェクトのコンパイル時にエラーが発生します。

Web メソッドのパラメータは XML シリアル化可能である必要がある

使用する Web サービスのパラメータはすべて、XML シリアル化可能である必要があります。 XML シリアル化可能でないパラメータを含む Web メソッドを追加すると、次のエラー メッセージが表示されることがあります。

"System.Xml.Element はメッセージ部分の型になるように、XML にシリアル化可能である必要があります。"

Note

Xml Serializable ではなく、XmlDocument および DataSet のデータ型がサポートされています。

メッセージングのみの Web サービスの使用

メッセージングのみの Web サービスを使用する場合、BizTalk メッセージのボディ部分の名前はすべて、Web メソッドのパラメータ名と一致する必要があります。 たとえば、Web サービスのシグネチャが の場合、パーツ名は WebMethod(MyType1 type1, MyType2 type2)type1 と type2 である必要があります。次のランタイム エラーが発生する可能性があります。

"パラメータ "%1" のメッセージ部分を取得できませんでした。"

詳細については、「 メッセージングのみのシナリオで Web サービスを使用する方法」を参照してください。

プログラムによる SOAP 送信ポートの構成

プログラムを使って、構成プロパティをメッセージ コンテキストに設定できます。 これらのプロパティは、送信ポートが静的であるか動的であるかにかかわらず、オーケストレーションまたはカスタム パイプライン コンポーネントに設定できます。

Note

静的 SOAP 送信ポートの MethodName プロパティをプログラムで構成するには、BizTalk Server管理コンソールの [SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブで、[メソッド名] を [後で指定] に設定する必要があります。

MethodName プロパティの詳細については、「How to Dynamically Set the URI of a Consumed Web Service」を参照してください。

[SOAP トランスポートのプロパティ] ダイアログ ボックスの詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブ」を参照してください。

プロパティのルール

構成プロパティがオーケストレーション、または受信パイプラインのカスタム パイプライン コンポーネントで設定されている場合は、次のルールが適用されます。

  • メッセージが静的送信ポートに送信された場合、プロパティの値は、その送信ポート用に構成された値で上書きされます。

  • メッセージが動的送信ポートに送信された場合、プロパティ値は上書きされません。

    構成プロパティが送信パイプラインのカスタム パイプライン コンポーネントで設定されている場合は、次のルールが適用されます。

  • メッセージを送信する送信ポートが静的か動的かにかかわらず、プロパティ値は上書きされません。 つまり、送信パイプライン コンポーネントは、設定されているかどうかにかかわらず、構成プロパティを上書きします。

  • カスタム パイプライン コンポーネントの詳細については、「カスタム パイプライン コンポーネントの開発」を参照してください。

  • SOAP 送信アダプターの構成プロパティの詳細については、「 How to Dynamically Set the URI of a Consumed Web Service」を参照してください。

使用する Web サービスに複数ルートのスキーマが含まれており、その Web サービスへの Web 参照を追加すると、コンパイル エラーが発生する

公開済みの BizTalk オーケストレーションから派生した Web サービスの Web 参照をプロジェクトに追加し、そのオーケストレーションに複数ルートのスキーマが含まれる場合は、プロジェクトのコンパイル時にエラーが発生します。 公開済みの BizTalk オーケストレーションから派生した Web 参照をプロジェクトに追加する場合は、オーケストレーションに複数ルートのスキーマが含まれていないことを確認してください。

Web メソッドのパラメータとしての TypedDataSets の使用

Web メソッドのパラメータとして TypedDataSets を使用するには、次の手順を実行します。

  1. Web 参照を C# プロジェクトに追加し、プロキシを生成します。

  2. SOAP 送信ポートを作成し、送信ポートにプロキシを指定して、メソッドを選択します。

  3. オーケストレーションで、遅延バインディング ポートとメッセージの種類を定義します。 プロパティの昇格や識別フィールド アクセスが必要ないほとんどの場合、型は XMLDocument として定義できます。 この種類に対応したパススルー パイプラインを選択してください。

  4. BizTalk Server管理コンソールの SOAP 送信ポートの [SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブで、作成したプロキシを使用するように指定します。 アセンブリ、型、メソッドも指定する必要があります。 詳細については、UI ガイダンスと開発者 API 名前空間リファレンス「SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブ」を参照してください。

使用する Web サービスにジェネリック パラメータを想定した Web メソッドが含まれており、その Web サービスへの Web 参照を追加すると、コンパイル エラーが発生する

NULL 許容パラメータなどのジェネリック パラメータを想定した Web メソッドを含む Web サービスの Web 参照をプロジェクトに追加すると、プロジェクトのコンパイル時にエラーが発生します。 これはサポートされていません。 ジェネリック クラスは XLANG/s から明示的な特殊化によって呼び出す必要があります。

[サービス参照の追加] を使用した BizTalk スキーマの生成

サービス参照の追加を使用して BizTalk プロジェクトにサービス参照を追加する場合、BizTalk Serverは、各 Web メソッドを呼び出すために必要なスキーマの種類をスキーマに変換します。 変換後のスキーマは Reference.xsd に追加されます。 サービス参照の追加で BizTalk スキーマが正しく生成されるようにするには、Web サービスが次のガイドラインに従っている必要があります。

  • Web メソッドには、 SoapRpcMethodAttribute ではなく SoapDocumentMethodAttribute が必要です。

  • Web サービスとメソッドでは、[SoapDocumentMethod(Use=SoapBindingUse.Literal)] など、エンコードではなくリテラル バインドを使用する必要があります。

  • Web メソッドのパラメーターと戻り値の型は、ネイティブ XSD 型と XmlNode 型でない限り、有効な Namespace プロパティを持つ XmlRootAttribute を持つ必要があります。

  • Web メソッドでは、SoapDocumentMethodAttributeRequestNamespace プロパティと ResponseNamespace プロパティを使用することはできません。

  • Web サービスは、Web Services Interoperability (WSI) Basic Profile バージョン 1.1 に準拠する。

XSD に単純なパラメーターの型のノードが含まれない

Web 参照を追加するときに、Web メソッドに単純な型のパラメーターが含まれている場合、生成される XSD にはそのパラメーターのノードは含まれません。 代わりに、生成されるマルチパート メッセージに単純な型の部分が含まれます。 このメッセージ部分は、オーケストレーションで適切に処理する必要があります。 Web サービスへの要求の部分である場合は、メッセージの割り当て図形により、その部分に手動で値を割り当てます。 Web サービスからの応答の部分である場合は、図形式でその部分に手動でアクセスして、値を確認します。

[サービス参照の追加] で Web Services Description Language (WSDL) インポート要素がサポートされない

インポート要素を使用して WSDL ファイルのサービス参照を追加すると、[サービス参照の追加] は失敗します。

参照

Web メッセージの構築