Web サービスの使用の計画
Web サービスの計画は、Web サービスの発行計画と Web サービスの使用計画という 2 つのカテゴリに分けることができます。 このトピックでは、Web サービスの使用に関する考慮事項について説明します。 Web サービスの発行の詳細については、「Web サービスの発行計画1」を参照してください。
プランを作成するときは、次の点に注意してください。
パラメーター名に 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 予約語 (https://go.microsoft.com/fwlink/?LinkId=155765) を参照してください。
パラメーター型に必要な XLANG/秒のサポート
サポートされている XLANG/s 以外の Web メソッド パラメーター型を使用すると、コンパイル エラーが発生します。 たとえば、BizTalk Server では 1 次元配列のスキーマの種類で構成されるパラメータはサポートされていません。 さらに、BizTalk Serverでは多次元配列はサポートされていません。 XLANG/s 言語がBizTalk Serverで予約する単語の一覧については、「XLANG/s 予約語 (https://go.microsoft.com/fwlink/?LinkId=155765)」を参照してください。
C# キーワードまたは識別子を含む Web 参照を追加することによって発生するコンパイル エラーの回避
[Web 参照の追加]を使用して BizTalk プロジェクトに Web 参照を追加すると、各 Web メソッドを呼び出すために必要なスキーマ型がスキーマに変換BizTalk Server。 変換後のスキーマは Reference.xsd に追加されます。 スキーマに C# のキーワードと同じ要素名や C# の識別子として有効でない要素名が含まれる場合は、ランタイム エラーが発生することがあります。 ランタイム エラーを回避するには、使用する Web サービスに C# のキーワードと同じ要素名や C# の識別子として無効な要素名を含めないようにしてください。
複数のサービス/ポートの種類の定義はサポートされていません
BizTalk Server では、単一のサービスおよびポートの種類の定義を含む Web サービス ファイルを追加することができます。 複数のサービスまたはポートの種類の定義を含む WSDL ファイルを追加すると、次のエラーが発生することがあります。
Could not generate BizTalk files. Object reference not set to an instance of an object.
Web サービスによって公開される配列の使用のサポート
BizTalk Serverは、Web サービスにBizTalk Serverされていない Web サービスによって公開される 1 次元配列とジャグ配列を使用できます。 Web サービス配列を使用する方法の詳細については、「How to Consume Web Service Arrays (https://go.microsoft.com/fwlink/?LinkId=155766)」を参照してください。
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 のデータ型がサポートされています。
Messaging-Only Web サービスの使用
メッセージング専用 Web サービスを使用する場合、メッセージ本文のすべてのBizTalk Serverパーツ名が Web メソッド パラメーター名と一致している必要があります。 たとえば、Web サービスのシグネチャが の場合、パーツ名は
WebMethod(MyType1 type1, MyType2 type2)
type1 と type2 である必要があります。次のランタイム エラーが発生する可能性があります。Failed to retrieve the message part for parameter %1
詳細については、「 Messaging-Only シナリオで Web サービスを使用する方法 (https://go.microsoft.com/fwlink/?LinkId=155767)」を参照してください。
プログラムによる SOAP 送信ポートの構成
プログラムを使って、構成プロパティをメッセージ コンテキストに設定できます。 送信ポートが静的か動的かに関係なく、オーケストレーションまたはカスタム パイプライン コンポーネントでこれらのプロパティを設定できます。
Note
静的 SOAP 送信ポートの MethodName プロパティをプログラムで構成するには、BizTalk Server管理コンソールの [SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブで、[メソッド名] を [後で指定] に設定する必要があります。
MethodName プロパティの詳細については、「How to Dynamically Set the URI of a Consumed Web Service (https://go.microsoft.com/fwlink/?LinkID=155768)」を参照してください。
プロパティのルール
構成プロパティがオーケストレーション、または受信パイプラインのカスタム パイプライン コンポーネントで設定されている場合は、次のルールが適用されます。
メッセージが静的送信ポートに送信された場合、プロパティの値は、その送信ポート用に構成された値で上書きされます。
メッセージが動的送信ポートに送信された場合、プロパティ値は上書きされません。
構成プロパティが送信パイプラインのカスタム パイプライン コンポーネントで設定されている場合は、次のルールが適用されます。
メッセージを送信する送信ポートが静的か動的かにかかわらず、プロパティ値は上書きされません。 つまり、送信パイプライン コンポーネントは、設定されているかどうかにかかわらず、構成プロパティを上書きします。
カスタム パイプライン コンポーネントの詳細については、「カスタム パイプライン コンポーネントの開発 (https://go.microsoft.com/fwlink/?LinkId=155769)」を参照してください。
SOAP 送信アダプターの構成プロパティの詳細については、「 How to Dynamically Set the URI of a Consumed Web Service (https://go.microsoft.com/fwlink/?LinkID=155768)」を参照してください。
マルチルート スキーマを含む使用済み Web サービスに Web 参照を追加すると、コンパイル エラーが発生します
発行された BizTalk オーケストレーションから派生した Web サービスの Web 参照をプロジェクトに追加し、オーケストレーションに複数のルートを持つスキーマが含まれている場合、プロジェクトのコンパイル時にエラーが発生します。 公開済みの BizTalk オーケストレーションから派生した Web 参照をプロジェクトに追加する場合は、オーケストレーションに複数ルートのスキーマが含まれていないことを確認してください。
TypedDataSets を Web メソッドのパラメーターとして使用する
Web メソッドのパラメータとして TypedDataSets を使用するには、次の手順を実行します。
Web 参照を C# プロジェクトに追加し、プロキシを生成します。
SOAP 送信ポートを作成し、送信ポートにプロキシを指定して、メソッドを選択します。
オーケストレーションで、遅延バインディング ポートとメッセージの種類を定義します。 プロパティの昇格や識別フィールド アクセスが必要ないほとんどの場合、型は XMLDocument として定義できます。 この種類に対応したパススルー パイプラインを選択してください。
BizTalk Server管理コンソールの SOAP 送信ポートの [SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブで、作成したプロキシを使用するように指定します。 アセンブリ、型、メソッドも指定する必要があります。
Generic-Based パラメーターが必要な Web メソッドを含む使用済み Web サービスに Web 参照を追加すると、コンパイル エラーが発生する
Null 許容パラメーターなどのジェネリック ベースのパラメーターを必要とする Web メソッドを含む Web サービスの Web 参照をプロジェクトに追加すると、プロジェクトのコンパイル時にエラーが発生します。 これはサポートされていません。 ジェネリック クラスは XLANG/s から明示的な特殊化によって呼び出す必要があります。
Web 参照の追加を使用した BizTalk スキーマの生成
[Web 参照の追加]を使用して BizTalk プロジェクトに Web 参照を追加すると、各 Web メソッドを呼び出すために必要なスキーマ型がスキーマに変換BizTalk Server。 変換後のスキーマは Reference.xsd に追加されます。 Web 参照の追加で BizTalk スキーマが正しく生成されるようにするには、Web サービスが次のガイドラインに準拠している必要があります。
Web メソッドには、 SoapRpcMethodAttribute ではなく SoapDocumentMethodAttribute が必要です。
Web サービスとメソッドでは、[SoapDocumentMethod(Use=SoapBindingUse.Literal)] など、エンコードではなくリテラル バインドを使用する必要があります。
Web メソッドのパラメーターと戻り値の型は、ネイティブ XSD 型と XmlNode 型でない限り、有効な Namespace プロパティを持つ XmlRootAttribute を持つ必要があります。
Web メソッドでは、SoapDocumentMethodAttribute で RequestNamespace プロパティと ResponseNamespace プロパティを使用することはできません。
Web サービスは、Web Services Interoperability (WSI) Basic Profile バージョン 1.1 に準拠する。
Web 参照の追加は、Web サービス記述言語 (WSDL) インポート要素をサポートしていません
インポート要素を使用して WSDL ファイルの Web 参照を追加すると、[Web 参照の追加] は失敗します。