<serviceMetadata>
Gibt die Veröffentlichung der Dienstmetadaten und der zugeordneten Informationen an.
Schemahierarchie
<<system.serviceModel>>
<behaviors>
<serviceBehaviors>
<behavior> von <serviceBehaviors>
<serviceMetadata>
Syntax
<serviceMetadata
externalMetadataLocation="String"
httpGetBinding=”String” httpGetBindingConfiguration=”String”
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding=”String” httpsGetBindingConfiguration=”String”
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15"/>
Attribute und Elemente
In den folgenden Abschnitten werden Attribute, untergeordnete Elemente sowie übergeordnete Elemente beschrieben.
Attribute
Attribut | Beschreibung |
---|---|
externalMetadataLocation |
Ein URI, der den Speicherort einer WSDL-Datei enthält, die dem Benutzer als Antwort auf WSDL- und MEX-Anforderungen statt der automatisch generierten WSDL-Datei zurückgegeben wird. Wenn dieses Attribut nicht festgelegt wird, wird die WSDL-Standarddatei zurückgegeben. Der Standardwert ist eine leere Zeichenfolge. |
httpGetBinding |
Eine Zeichenfolge, die den Typ der Bindung angibt, die für den Abruf von Metadaten mit HTTP GET verwendet wird. Diese Einstellung ist optional. Wenn nicht angegeben, werden die Standardbindungen verwendet. Nur Bindungen mit inneren Bindungselementen, die T:System.ServiceModel.Channels.IReplyChannel unterstützen, werden unterstützt. Darüber hinaus muss die P:System.ServiceModel.Channels.MessageVersion-Eigenschaft der Bindung den Wert P:System.ServiceModel.Channels.MessageVersion.None aufweisen. |
httpGetBindingConfiguration |
Eine Zeichenfolge mit dem Namen der Bindung, die im httpGetBinding-Attribut angegeben ist, das auf die zusätzlichen Konfigurationsinformationen dieser Bindung verweist. Der gleiche Name muss im Abschnitt <bindings> definiert werden. |
httpGetEnabled |
Ein boolescher Wert, der angibt, ob die Dienstmetadaten zum Abrufen anhand einer HTTP/Get-Anforderung veröffentlicht werden sollen. Die Standardeinstellung ist false. Falls das httpGetUrl-Attribut nicht angegeben ist, ist die Adresse, an der die Metadaten veröffentlicht werden, die Dienstadresse plus ein "?wsdl". Wenn die Dienstadresse beispielsweise "https://localhost:8080/CalculatorService" lautet, ist die HTTP/GET-Metadatenadresse "https://localhost:8080/CalculatorService? wsdl". Falls diese Eigenschaft false lautet oder die Adresse des Diensts nicht auf HTTP oder HTTPS basiert, wird "?wsdl" ignoriert. |
httpGetUrl |
Ein URI, der die Adresse angibt, an der die Metadaten zum Abrufen anhand einer HTTP/Get-Anforderung veröffentlicht werden. |
httpsGetBinding |
Eine Zeichenfolge, die den Typ der Bindung angibt, die für den Abruf von Metadaten mit HTTPS GET verwendet wird. Diese Einstellung ist optional. Wenn nicht angegeben, werden die Standardbindungen verwendet. Nur Bindungen mit inneren Bindungselementen, die T:System.ServiceModel.Channels.IReplyChannel unterstützen, werden unterstützt. Darüber hinaus muss die P:System.ServiceModel.Channels.MessageVersion-Eigenschaft der Bindung den Wert P:System.ServiceModel.Channels.MessageVersion.None aufweisen. |
httpsGetBindingConfiguration |
Eine Zeichenfolge mit dem Namen der Bindung, die im httpsGetBinding-Attribut angegeben ist, das auf die zusätzlichen Konfigurationsinformationen dieser Bindung verweist. Der gleiche Name muss im Abschnitt <bindings> definiert werden. |
httpsGetEnabled |
Ein boolescher Wert, der angibt, ob die Dienstmetadaten zum Abrufen anhand einer HTTPS/Get-Anforderung veröffentlicht werden sollen. Die Standardeinstellung ist false. Falls das httpsGetUrl-Attribut nicht angegeben ist, ist die Adresse, an der die Metadaten veröffentlicht werden, die Dienstadresse plus ein "?wsdl". Wenn die Dienstadresse beispielsweise "https://localhost:8080/CalculatorService" lautet, ist die HTTP/GET-Metadatenadresse "https://localhost:8080/CalculatorService? wsdl". Falls diese Eigenschaft false lautet oder die Adresse des Diensts nicht auf HTTP oder HTTPS basiert, wird "?wsdl" ignoriert. |
httpsGetUrl |
Ein URI, der die Adresse angibt, an der die Metadaten zum Abrufen anhand einer HTTPS/Get-Anforderung veröffentlicht werden. |
policyVersion |
Eine Zeichenfolge, die angibt, welche Version der WS-Policy-Spezifikation verwendet wird. Dieses Attribut ist vom Typ PolicyVersion. |
Untergeordnete Elemente
None
Übergeordnete Elemente
Element | Beschreibung |
---|---|
Gibt ein Verhaltenselement an. |
Hinweise
Mit diesem Konfigurationselement können Sie die Metadatenveröffentlichungs-Features eines Diensts steuern. Um ein unbeabsichtigtes Veröffentlichen von möglicherweise vertraulichen Dienstmetadaten zu vermeiden, wird mit der Standardkonfiguration für Windows Communication Foundation (WCF)-Dienste die Metadatenveröffentlichung deaktiviert. Dieses Verhalten ist standardmäßig sicher, bedeutet aber auch, dass Sie kein Metadatenimporttool (wie Svcutil.exe) zum Generieren des Clientcodes verwenden können, der zum Aufrufen des Diensts benötigt wird, es sei denn, das Veröffentlichungsverhalten der Dienstmetadaten ist in der Konfiguration ausdrücklich aktiviert. Wenn Sie dieses Konfigurationselement verwenden, können Sie dieses Veröffentlichungsverhalten für Ihren Dienst aktivieren.
Ein ausführliches Codebeispiel für die Konfiguration dieses Verhaltens finden Sie unter Metadata Publishing Behavior.
Das optionale httpGetBinding-Attribut und httpsGetBinding-Attribut ermöglichen Ihnen das Konfigurieren der zum Abrufen der Metadaten über HTTP-GET (oder HTTPS-GET) verwendeten Bindungen. Wenn sie nicht festgelegt sind, werden die Standardbindungen (HttpTransportBindingElement für HTTP und HttpsTransportBindingElement für HTTPS) entsprechend zum Abrufen der Metadaten verwendet. Beachten Sie, dass Sie diese Attribute nicht mit den integrierten WCF-Bindungen verwenden können. Nur Bindungen mit inneren Bindungselementen, die IReplyChannel unterstützen, werden unterstützt. Darüber hinaus muss die MessageVersion-Eigenschaft der Bindung None sein.
Damit der Dienst möglichst gut vor böswilligen Benutzern geschützt wird, können Sie für die Übertragung den HTTPS-Mechanismus (SSL über HTTP) verwenden. Hierfür müssen Sie zunächst ein geeignetes X.509-Zertifikat an einen bestimmten Port des Computers, auf dem der Dienst gehostet wird, binden. (Weitere Informationen finden Sie unter Working with Certificates.) Fügen Sie dann dieses Element der Dienstkonfiguration hinzu, und legen Sie für das httpsGetEnabled-Attribut den Wert true fest. Setzen Sie abschließend wie im folgenden Beispiel gezeigt das httpsGetUrl-Attribut auf den URL des Dienstmetadaten-Endpunkts:
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Beispiel
Im folgenden Beispiel wird ein Dienst anhand des <serviceMetadata>-Elements konfiguriert, mit dem Metadaten verfügbar gemacht werden. Es wird auch ein Endpunkt konfiguriert, mit dem der IMetadataExchange-Vertrag als Implementierung eines WS-MetadataExchange (MEX)-Protokolls verfügbar gemacht wird. In dem Beispiel wird mexHttpBinding verwendet, eine benutzerfreundliche Standardbindung, die wsHttpBinding entspricht und für die der Sicherheitsmodus auf None festgelegt ist. Im Endpunkt wird eine relative Adresse von "mex" verwendet, die beim Auflösen der Dienstbasisadresse zu einer Endpunktadresse von führt.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by the host: https://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at https://localhost/servicemodelsamples/service.svc/mex
To expose the IMetadataExchange contract, you
must enable the serviceMetadata behavior as demonstrated below -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<!-- The serviceMetadata behavior publishes metadata through
the IMetadataExchange contract. When this behavior is
present, you can expose this contract through an endpoint
as shown above. Setting httpGetEnabled to true publishes
the service's WSDL at the <baseaddress>?wsdl
eg. https://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Siehe auch
Verweis
ServiceMetadataPublishingElement
ServiceMetadataBehavior