<serviceMetadata>
Gibt die Veröffentlichung der Dienstmetadaten und der zugeordneten Informationen an.
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<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 sowie untergeordnete und übergeordnete Elemente beschrieben.
Attribute
attribute | 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 IReplyChannel unterstützen, werden unterstützt. Darüber hinaus muss die MessageVersion-Eigenschaft der Bindung None lauten. |
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. Der Standardwert 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 z. B. http://localhost:8080/CalculatorService ist, lautet die HTTP/Get-Metadatenadresse http://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. Wenn ein relativer URI angegeben ist, wird er als relativ zur Basisadresse des Diensts behandelt. |
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 IReplyChannel unterstützen, werden unterstützt. Darüber hinaus muss die MessageVersion-Eigenschaft der Bindung None lauten. |
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. Der Standardwert 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 z. B. https://localhost:8080/CalculatorService ist, lautet 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
Keine
Übergeordnete Elemente
Element | BESCHREIBUNG |
---|---|
<behavior> | Gibt ein Verhaltenselement an. |
Bemerkungen
Mit diesem Konfigurationselement können Sie die Metadatenveröffentlichungs-Funktionen 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 in der Standardeinstellung sicher, bedeutet aber auch, dass man den zum Aufrufen des Diensts erforderlichen Clientcode nicht mithilfe eines Tools zum Importieren von Metadaten (wie Svcutil.exe) generieren kann. Dies ist nur dann möglich, wenn das Verhalten des Diensts zum Veröffentlichen von Metadaten in der Konfiguration explizit aktiviert ist. Wenn Sie dieses Konfigurationselement verwenden, können Sie dieses Veröffentlichungsverhalten für Ihren Dienst aktivieren.
Ein ausführliches Beispiel für das Konfigurieren dieses Verhaltens finden Sie unter Metadatenveröffentlichungsverhalten.
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 lauten.
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 Arbeiten mit Zertifikaten.) Fügen Sie zweitens dieses Element der Dienstkonfiguration hinzu, und legen Sie das httpsGetEnabled
-Attribut auf 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 mit dem <serviceMetadata>-Element so konfiguriert, dass er Metadaten verfügbar macht. 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 eine Endpunktadresse von http://localhost/servicemodelsamples/service.svc/mex
ergibt.
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by the host: http://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- The mex endpoint is exposed at http://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. http://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>