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

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

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

HTTP GET メタデータ エンドポイントと HTTPS GET メタデータ エンドポイントを有効にするには、System.ServiceModel.Description.ServiceMetadataBehavior.HttpGetEnabled プロパティまたは System.ServiceModel.Description.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 バインディングとは異なるバインディングを使用する場合は、コードを使用するか、IMetadataExchange クライアント エンドポイント構成を提供することにより、MetadataExchangeClient で使用されるバインディングを構成できます。Svcutil.exe ツールは、構成ファイルから、メタデータ エンドポイント アドレスの URI スキームと同じ名前を持つ IMetadataExchange クライアント エンドポイント構成を自動的に読み込みます。

セキュリティ

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

参照

処理手順

方法 : カスタム WS-Metadata Exchange バインディングを構成する
方法: MEX 以外のバインディングを介してメタデータを取得する

概念

サービスのセキュリティ保護
WS-MetadataExchange のバインディング