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 nutzt WsdlExporter, um Metadaten für alle Dienstendpunkte in Ihren Dienst zu exportieren. Weitere Informationen über zum Export 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 System.ServiceModel.Description.ServiceMetadataExtension.Metadata-Eigenschaft zugreifen.
MEX-Metadatenendpunkte
Um Metadatenendpunkte hinzuzufügen, die das MEX-Protokoll verwenden, fügen Sie Dienstendpunkte zu Ihrem Diensthost hinzu, die den IMetadataExchange-Dienstvertrag nutzen. WCF enthält eine IMetadataExchange-Schnittstelle mit diesem Dienstvertragnamen, die Sie als Teil des WCF-Programmierungsmodells verwenden 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
- Gewusst wie: 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.
- Gewusst wie: 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