Veröffentlichen von Metadaten

Windows Communication Foundation (WCF)-Dienste veröffentlichen Metadaten, indem sie einen oder mehrere Metadatenendpunkte veröffentlichen. Die Veröffentlichung von Dienstmetadaten macht die Metadaten über die Nutzung standardisierter Protokolle verfügbar, z. B. WS-MetadataExchange (MEX) und HTTP/GET-Anforderungen. Metadatenendpunkte sind anderen Dienstendpunkten dahingehend ähnlich, dass sie über eine Adresse, eine Bindung und einen Vertrag verfügen und sie per Konfiguration oder in einem imperativen Code zu einem Diensthost hinzugefügt werden können.

Veröffentlichen von Metadatenendpunkten

Um Metadatenendpunkte für einen WCF-Dienst zu veröffentlichen, müssen Sie zunächst das ServiceMetadataBehavior-Dienstverhalten zum Dienst hinzufügen. Das Hinzufügen einer System.ServiceModel.Description.ServiceMetadataBehavior-Instanz ermöglicht es dem Dienst, Metadatenendpunkte verfügbar zu machen. Sobald Sie das System.ServiceModel.Description.ServiceMetadataBehavior-Dienstverhalten hinzufügen, können Sie Metadatenendpunkte verfügbar machen, die das MEX-Protokoll unterstützen oder auf die HTTP/GET-Anforderungen antworten.

Das System.ServiceModel.Description.ServiceMetadataBehavior verwendet einen WsdlExporter, um Metadaten für alle Dienstendpunkte in den Dienst zu exportieren. Weitere Informationen zum Exportieren von Metadaten aus einem Dienst finden Sie unter Exportieren und Importieren von Metadaten.

Das System.ServiceModel.Description.ServiceMetadataBehavior fügt dem Diensthost eine ServiceMetadataExtension-Instanz als Erweiterung hinzu. Die System.ServiceModel.Description.ServiceMetadataExtension stellt die Implementierung für die Metadaten bereit, die Protokolle veröffentlichen. Sie können darüber hinaus System.ServiceModel.Description.ServiceMetadataExtension verwenden, um die Metadaten des Diensts bei Laufzeit abzurufen, indem Sie auf die ServiceMetadataExtension.Metadata-Eigenschaft zugreifen.

MEX-Metadatenendpunkte

Fügen Sie Dienstendpunkte zum Diensthost hinzu, die den Dienstvertrag IMetadataExchange verwenden, um Metadatenendpunkte hinzuzufügen, die das MEX-Protokoll verwenden. WCF enthält eine IMetadataExchange-Schnittstelle mit diesem Dienstvertragnamen, die Sie als Teil des Dienstvertrags des WCF-Programmiermodells nutzen können. WS-MetadataExchange-Endpunkte oder MEX-Endpunkte können eine der vier Standardbindungen nutzen, die von den statischen Factorymethoden auf der MetadataExchangeBindings-Klasse verfügbar gemacht werden, sodass eine Anpassung auf die von den WCF-Tools, wie „Svcutil.exe“, verwendeten Standardbindungen erreicht wird. Sie können auch MEX-Metadatenendpunkte mithilfe einer eigenen benutzerdefinierten Bindung konfigurieren.

HTTP-GET-Metadatenendpunkte

Zum Hinzufügen eines Metadatenendpunkts zu Ihrem Dienst, der auf HTTP/GET-Anforderungen antwortet, legen Sie die HttpGetEnabled-Eigenschaft auf dem System.ServiceModel.Description.ServiceMetadataBehavior auf true fest. Darüber hinaus können Sie einen Metadatenendpunkt konfigurieren, der HTTPS verwendet, indem Sie die HttpsGetEnabled-Eigenschaft auf dem System.ServiceModel.Description.ServiceMetadataBehavior auf true festlegen.

In diesem Abschnitt

Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei
Veranschaulicht, wie ein WCF-Dienst für die Veröffentlichung von Metadaten konfiguriert wird, sodass Clients die Metadaten über WS-MetadataExchange oder eine HTTP/GET-Anforderung mithilfe einer ?wsdl-Abfragezeichenfolge abrufen können.

Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst über den Code
Veranschaulicht, wie die Metadatenveröffentlichung für einen WCF-Dienst im Code aktiviert wird, sodass Clients Metadaten über WS-MetadataExchange oder eine HTTP/GET-Anforderung mithilfe der ?wsdl-Abfragezeichenfolge abrufen können.

Referenz

ServiceMetadataBehavior

IMetadataExchange

ServiceMetadataExtension

MetadataExchangeBindings

Siehe auch