WsdlExporter オブジェクトによってエクスポートされる Web サービス記述言語 (WSDL) を変更および拡張するには、エンドポイント、コントラクト、または操作の動作 (IContractBehavior、IEndpointBehavior または IOperationBehavior を実装するオブジェクト) に IWsdlExportExtension インターフェイスを実装し、その動作を Behaviors プロパティ、Behaviors プロパティ、または Behaviors プロパティに追加します。また、BindingElement に IWsdlExportExtension を実装することもできます。
Windows Communication Foundation (WCF) はカスタム バインディング ポリシー アサーションを WSDL 内の適切な要素にエクスポートしますが、IWsdlExportExtension はカスタム ポリシー アサーションをエクスポートしません。カスタム ポリシー アサーションをエクスポートする場合は、IPolicyExportExtension インターフェイスを実装します。
メタデータの公開プロセスは、WsdlExporter..::.ExportEndpoints の呼び出しによって開始されます。これにより、エンドポイントごとに WsdlExporter..::.ExportEndpoint が呼び出されます。
エンドポイントのエクスポートでは、最初にエンドポイントのコントラクトをエクスポートします。コントラクトをエクスポートするときに、System.ServiceModel.Description..::.WsdlExporter は、コントラクトのすべての IWsdlExportExtension 実装とコントラクトの操作の動作で IWsdlExportExtension..::.ExportContract メソッドを呼び出します。ワイルドカード アクションを使用する操作はメタデータでエクスポートされないため、このような操作に対する操作の動作の IWsdlExportExtension 実装はエクスポートされません。
コントラクトのエクスポート後に、ポートとバインディングがエクスポートされ、エクスポートされたポリシー式が結び付けられます。
ExportContract および ExportEndpoint メソッドは、いずれも WsdlExporter へのアクセスを提供します。これにより、IWsdlExportExtension 実装は、回復可能なエラーおよび警告を Errors プロパティを通じてレポートできます。両方のメソッドに渡されるコンテキスト オブジェクトは、エクスポートされた WSDL 要素から ContractDescription および ServiceEndpoint オブジェクトのプロパティへの便利なマッピングを提供します。
IWsdlExportExtension 実装がエクスポートで例外をスローした場合、生成されたメタデータには不整合があるので、WsdlExporter オブジェクトを破棄する必要があります。