カスタム バインディングを介したメタデータの公開と取得

System.ServiceModel.Description.ServiceMetadataBehavior は、サービスにメタデータ エンドポイントを追加するためのサポートを提供します。 これらのメタデータ エンドポイントは、?wsdl クエリ文字列を持つ URL での HTTP GET 要求、および WS-MetadataExchange (MEX) 仕様で定義された WS-Transfer GET 要求に応答できます。 MEX エンドポイントは、System.ServiceModel.Description.IMetadataExchange コントラクトを実装します。

カスタム バインドを介したメタデータの公開

HTTP GET メタデータ エンドポイントと HTTPS GET メタデータ エンドポイントを有効にするには、ServiceMetadataBehavior.HttpGetEnabled プロパティまたは ServiceMetadataBehavior.HttpsGetEnabled プロパティを true に設定します。 これらのエンドポイントのバインディングは構成できません。

ただし、IMetadataExchange コントラクトは、カスタム バインドを使用するエンドポイントを含むすべてのエンドポイントで使用できます。これは、IMetadataExchange エンドポイントは他のすべての Windows Communication Foundation (WCF) サービス エンドポイントと同じであるためです。 システム指定のバインディングの構成を変更する方法または System.ServiceModel.Channels.CustomBinding の構成方法を理解している場合は、IMetadataExchange エンドポイントで使用されるバインディングを構成できます。

カスタム バインドを介したメタデータの取得

メタデータは、標準の HTTP 要求または HTTPS GET 要求を使用して HTTP Get および HTTPS Get メタデータ エンドポイントから取得できます。

MEX メタデータ エンドポイントからメタデータを取得するには、通常、WCF でサポートされている標準の MEX バインディングのいずれかを使用できます。 詳細については、「System.ServiceModel.Description.MetadataExchangeBindings」を参照してください。 System.ServiceModel.Description.MetadataExchangeClient 型および Svcutil.exe ツールでは、指定したメタデータ エンドポイントのアドレスに基づいて、標準の MEX バインディングの 1 つが自動的に選択されます。

MEX メタデータ エンドポイントで標準の MEX バインディングとは異なるバインディングを使用する場合は、コードを使用するか、MetadataExchangeClient クライアント エンドポイント構成を提供することにより、IMetadataExchange で使用されるバインディングを構成できます。 Svcutil.exe ツールは、構成ファイルから、メタデータ エンドポイント アドレスの URI スキームと同じ名前を持つ IMetadataExchange クライアント エンドポイント構成を自動的に読み込みます。

セキュリティ

カスタム バインドを介してメタデータを公開する場合、メタデータに必要なセキュリティ サポートをそのカスタム バインドが提供することを確認してください。 たとえば、情報の漏えいを防止し、メタデータを取得するための権限がクライアントにあることを確認するには、認証および暗号化を要求するように IMetadataExchange エンドポイントを構成することによってメタデータとアプリケーションのセキュリティを強化します。 サンプルのカスタム セキュア メタデータ エンドポイントは、このシナリオを示しています。

関連項目