Web サービスの計画は、Web サービスの発行計画と Web サービスの使用計画という 2 つのカテゴリに分けることができます。 このトピックでは、Web サービスの使用に関する考慮事項について説明します。 Web サービスの発行の詳細については、「 Web サービスの発行の計画 1」を参照してください。
プランを作成するときは、次の点に注意してください。
パラメーター名に 2 つのアンダースコア文字を使用する
Web メソッドのパラメーター名は、"__" (2 つのアンダースコア文字) で始めることはできません。 2 つのアンダースコア文字で始まる名前は、XLANG/秒でサポートされていない (使用できない) Web メッセージ パーツを作成する場合があります。
Any 要素と anyAttribute 属性は、Web メソッドではサポートされていません
Web メソッドのスキーマでは、 任意 の要素または anyAttribute 属性を使用できません。
XLANG/s キーワードの使用
Web サービス名または Web メソッド名を XLANG/秒のキーワードにすることはできません。 Web サービス名または Web メソッド名に XLANG/s キーワードを使用すると、Web サービスを追加するとコンパイル エラーが発生します。 XLANG/s 言語の予約語の一覧については、 XLANG/s 予約語 (https://go.microsoft.com/fwlink/?LinkId=155765) を参照してください。
パラメーター型に必要な XLANG/s のサポート
サポートされている XLANG/秒以外の Web メソッド パラメーター型を使用すると、コンパイル エラーが発生します。 たとえば、BizTalk Server では、スキーマ型の 1 次元配列で構成されるパラメーターはサポートされていません。 さらに、BizTalk Server は多次元配列をサポートしていません。 BizTalk Server で XLANG/s 言語で予約されている単語の一覧については、「 XLANG/s 予約語 (https://go.microsoft.com/fwlink/?LinkId=155765)」を参照してください。
C# キーワードまたは識別子を含む Web 参照を追加することによって発生するコンパイル エラーの回避
Web 参照の追加を使用して BizTalk プロジェクトに Web 参照を追加すると、BizTalk Server は、各 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 は、BizTalk Server Web サービスではない Web サービスによって公開される 1 次元およびジャグ配列を使用できます。 Web サービス配列を使用する方法の詳細については、「Web サービス配列を使用する方法 (https://go.microsoft.com/fwlink/?LinkId=155766)」を参照してください。
注
多次元配列構文はサポートされていません。 たとえば、 MyArray[1,5]。
注
BizTalk Server では、Web サービスによって公開される DataSet オブジェクトの配列の使用はサポートされていません。 XLANG/s サブサービスは .NET DataSet クラスをネイティブにサポートしますが、.NET DataSet オブジェクトの配列を公開する Web サービスへの Web 参照を含む BizTalk プロジェクトを作成すると、プロジェクトをコンパイルしようとするとエラーが発生します。
Web メソッドパラメーターは Xml シリアル化可能である必要があります
使用される Web サービス内のすべてのパラメーターは Xml シリアル化可能である必要があります。 Xml Serializable ではないパラメーターを含む Web メソッドを追加すると、次のエラー メッセージが表示されることがあります。
System.Xml.Element は、メッセージ パーツ型にするには Xml Seralizeable である必要があります。
注
Xml シリアル化可能ではありませんが、 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 送信ポートをプログラムで構成する
メッセージ コンテキストで構成プロパティをプログラムで設定できます。 送信ポートが静的か動的かに関係なく、オーケストレーションまたはカスタム パイプライン コンポーネントでこれらのプロパティを設定できます。
注
静的 SOAP 送信ポートの MethodName プロパティをプログラムで構成するには、BizTalk Server 管理コンソールの [SOAP トランスポートのプロパティ] ダイアログ ボックスの [Web サービス] タブで、メソッド名を [後で指定] に設定する必要があります。
MethodName プロパティの詳細については、「使用される Web サービス (https://go.microsoft.com/fwlink/?LinkID=155768) の URI を動的に設定する方法」を参照してください。
プロパティ ルール
オーケストレーションまたは受信パイプラインのカスタム パイプライン コンポーネントで構成プロパティが設定されている場合は、次の規則が適用されます。
メッセージが静的送信ポートに送信された場合、プロパティ値は、その送信ポート用に構成された値で上書きされます。
メッセージが動的送信ポートに送信された場合、プロパティ値は上書きされません。
送信パイプラインのカスタム パイプライン コンポーネントで構成プロパティが設定されている場合は、次の規則が適用されます。
この値は、メッセージが静的または動的な送信ポートに送信されるかどうかに関係なく上書きされません。 つまり、送信パイプライン コンポーネントは、設定された場所に関係なく、構成プロパティを上書きします。
カスタム パイプライン コンポーネントの詳細については、「 カスタム パイプライン コンポーネントの開発 (https://go.microsoft.com/fwlink/?LinkId=155769)」を参照してください。
SOAP 送信アダプターの構成プロパティの詳細については、「使用される Web サービス (https://go.microsoft.com/fwlink/?LinkID=155768) の URI を動的に設定する方法」を参照してください。
複数ルート スキーマを含む使用済み Web サービスに Web 参照を追加すると、コンパイル エラーが発生します
発行された BizTalk オーケストレーションから派生した Web サービスの Web 参照をプロジェクトに追加し、オーケストレーションに複数のルートを持つスキーマが含まれている場合、プロジェクトのコンパイル時にエラーが発生します。 発行された BizTalk オーケストレーションから派生した Web 参照をプロジェクトに追加する場合は、オーケストレーションに複数ルートスキーマが含まれていないことを確認します。
TypedDataSets を Web メソッドのパラメーターとして使用する
TypedDataSets を Web メソッドのパラメーターとして使用するために必要な操作を次に示します。
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 参照を追加すると、BizTalk Server は、各 Web メソッドを呼び出すために必要なスキーマ型をスキーマに変換します。 BizTalk Server は、これらのスキーマを Reference.xsd に追加します。 Web 参照の追加で BizTalk スキーマが正しく生成されるようにするには、Web サービスが次のガイドラインに準拠している必要があります。
Web メソッドには、 SoapRpcMethodAttribute ではなく SoapDocumentMethodAttribute が必要です。
Webサービスとメソッドでは、エンコードの代わりにリテラルバインドを使用する必要があります。例えば、[SoapDocumentMethod(Use=SoapBindingUse.Literal)]です。
Web メソッドのパラメーターと戻り値の型には、ネイティブ XSD 型と XmlNode 型でない限り、有効な名前空間プロパティを持つ XmlRootAttribute が必要です。
Web メソッドでは、SoapDocumentMethodAttribute の RequestNamespace プロパティと ResponseNamespace プロパティを使用しないでください。
Web サービスは、Web サービス相互運用性 (WSI) 基本プロファイル バージョン 1.1 に準拠している必要があります。
Web 参照の追加は、Web サービス記述言語 (WSDL) インポート要素をサポートしていません
WSDL ファイルの Web 参照を import 要素と共に追加すると、Web 参照の追加が失敗します。