方法 : システム指定のバインディングをカスタマイズする
Windows Communication Foundation (WCF) には、システム指定のバインディングがいくつか含まれています。これらのバインディングを使用して、基になるバインディング要素の一部のプロパティを構成できますが、すべてのプロパティを構成できるとは限りません。ここでは、バインディング要素のプロパティを設定してカスタム バインディングを作成する方法を示します。
システム指定のバインディングを使用せずに、バインディング要素を直接作成し構成する方法詳細については、 、「カスタム バインディング」を参照してください。
カスタム バインディングの作成および拡張詳細については、 、「バインディングの拡張」を参照してください。
WCF では、すべてのバインディングが複数の "バインディング要素" で構成されています**。各バインディング要素は BindingElement クラスから派生します。BasicHttpBinding などのシステム指定のバインディングでは、独自のバインディング要素が作成され構成されます。ここでは、バインディングに直接公開されないこのバインディング要素 (具体的には BasicHttpBinding クラス) のプロパティにアクセスして変更する方法を示します。
個別のバインディング要素は BindingElementCollection クラスで表されるコレクションに格納し、トランザクション フロー、信頼できるセッション、セキュリティ、複合二重、一方向、ストリーム セキュリティ、メッセージ エンコーディング、トランスポートの順に追加します。どのバインディングでも、これらすべてのバインディング要素が必要になるとは限りません。ユーザー定義のバインディング要素も、このバインディング要素のコレクションに表示されますが、前述の順序で表示される必要があります。たとえば、ユーザー定義のトランスポートは、バインディング要素コレクションの最後の要素となる必要があります。
BasicHttpBinding クラスには、次の 3 つのバインディング要素が含まれています。
- オプションのセキュリティ バインディング要素。HTTP トランスポートで使用される AsymmetricSecurityBindingElement クラス (メッセージ レベル セキュリティ)、またはトランスポート層がセキュリティを提供する場合 (HTTPS トランスポート) に使用される TransportSecurityBindingElement。
- 必須のメッセージ エンコーダ バインディング要素。TextMessageEncodingBindingElement または MtomMessageEncodingBindingElement。
- 必須のトランスポート バインディング要素。HttpTransportBindingElement または HttpsTransportBindingElement。
この例では、バインディングのインスタンスを作成し、そのインスタンスから "カスタム バインディング" を生成します**。次にカスタム バインディング内のバインディング要素を調べて HTTP バインディング要素が見つかった場合は、その KeepAliveEnabled
プロパティを false
に設定します。KeepAliveEnabled
プロパティは、BasicHttpBinding
に直接公開されていないので、カスタム バインディングを作成し、バインディング要素まで移動して、このプロパティを設定する必要があります。
システム標準のバインディングを変更するには
BasicHttpBinding クラスのインスタンスを作成し、そのセキュリティ モードをメッセージ レベルに設定します。
バインディングからカスタム バインディングを作成し、そのカスタム バインディングのプロパティの 1 つから BindingElementCollection クラスを作成します。
BindingElementCollection クラスをループして HttpTransportBindingElement クラスが見つかったら、その KeepAliveEnabled プロパティを false に設定します。
関連項目
リファレンス
HttpTransportBindingElement
BasicHttpBinding
CustomBinding