方法 : カスタム ポリシー アサーションをエクスポートする
ポリシー アサーションはサービス エンドポイントの機能と要件を説明します。サービス アプリケーションは、サービス メタデータに含まれるカスタム ポリシー アサーションを使用して、エンドポイントのバインディングまたはコントラクトのカスタマイズ情報をクライアント アプリケーションに伝達します。Windows Communication Foundation (WCF) を使用すると、伝達している機能または要件に応じて、エンドポイント、操作、またはメッセージ サブジェクトで WSDL バインディングに結び付けられているポリシー表現のアサーションをエクスポートできます。
カスタム ポリシー アサーションは、System.ServiceModel.Description.IPolicyExportExtension インターフェイスを System.ServiceModel.Channels.BindingElement に実装して、サービス エンドポイントのバインディングにバインディング要素を直接挿入するか、またはアプリケーション構成ファイルにバインディング要素を登録することによってエクスポートされます。ポリシーのエクスポートの実装では、ExportPolicy メソッドに渡された System.ServiceModel.Description.PolicyConversionContext の適切な System.ServiceModel.Description.PolicyAssertionCollection に、System.Xml.XmlElement インスタンスとしてカスタム ポリシー アサーションを追加する必要があります。
また、WsdlExporter クラスの PolicyVersion プロパティをチェックし、入れ子になったポリシー表現およびポリシー フレームワーク属性を、指定されたポリシー バージョンに基づいた正しい名前空間にエクスポートする必要もあります。
カスタム ポリシー アサーションをインポートする方法については、「System.ServiceModel.Description.IPolicyImportExtension」および「方法 : カスタム ポリシー アサーションをインポートする」を参照してください。
カスタム ポリシー アサーションをエクスポートするには
System.ServiceModel.Channels.BindingElement に System.ServiceModel.Description.IPolicyExportExtension インターフェイスを実装します。バインディング レベルでのカスタム ポリシー アサーションの実装を次のコード例に示します。
プログラムまたはアプリケーション構成ファイルを使用して、エンドポイントのバインディングにバインディング要素を挿入します。次の手順を参照してください。
アプリケーション構成ファイルを使用してバインディングを挿入するには
カスタム ポリシー アサーション バインディング要素の System.ServiceModel.Configuration.BindingElementExtensionElement を実装します。
<bindingElementExtensions> 要素を使用して、そのバインディング要素拡張を構成ファイルに追加します。
System.ServiceModel.Channels.CustomBinding を使用してカスタム バインディングを作成します。
プログラムでバインディング要素を挿入するには
新しい System.ServiceModel.Channels.BindingElement を作成して System.ServiceModel.Channels.CustomBinding に追加します。
手順 1. のカスタム バインディングを新しいエンドポイントに追加し、AddServiceEndpoint メソッドを呼び出してその新しいサービス エンドポイントを System.ServiceModel.ServiceHost に追加します。
ServiceHost を開きます。カスタム バインディングの作成と、プログラムによるバインディング要素の挿入を次のコード例に示します。