System.ServiceModel.Description.ServiceMetadataBehaviorは、サービスにメタデータ エンドポイントを追加するためのサポートを提供します。 これらのメタデータ エンドポイントは、 ?wsdl
クエリ文字列を持つ URL で HTTP GET 要求に応答し、WS-MetadataExchange (MEX) 仕様で定義されている GET 要求を WS-Transfer できます。 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 バインディングのいずれかを自動的に選択します。
MEX メタデータ エンドポイントが標準の MEX バインディングの 1 つとは異なるバインディングを使用する場合は、コードを使用するか、IMetadataExchangeクライアント エンドポイント構成を指定して、MetadataExchangeClientで使用されるバインディングを構成できます。 Svcutil.exe ツールは、メタデータ エンドポイント アドレスの URI スキームと同じ名前を持つ IMetadataExchange クライアント エンドポイント構成を構成ファイルから自動的に読み込みます。
安全
カスタム バインドを介してメタデータを発行する場合は、メタデータに必要なセキュリティ サポートがバインディングによって提供されていることを確認します。 たとえば、情報漏えいを防ぎ、クライアントがメタデータを取得する権利を持っていることを確認するために、認証と暗号化を要求するように IMetadataExchange エンドポイントを構成することで、メタデータとアプリケーションのセキュリティを強化できます。 サンプルのカスタム セキュリティで保護されたメタデータ エンドポイントは、このシナリオを示しています。