Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt die Veröffentlichung von Dienstmetadaten und den zugehörigen 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
| Merkmal | Description |
|---|---|
| externalMetadataLocation | Ein URI, der den Speicherort einer WSDL-Datei enthält, die als Reaktion auf WSDL- und MEX-Anforderungen anstelle der automatisch generierten WSDL-Anforderungen an den Benutzer zurückgegeben wird. Wenn dieses Attribut nicht festgelegt ist, wird die Standard-WSDL zurückgegeben. Der Standardwert ist eine leere Zeichenfolge. |
| httpGetBinding | Eine Zeichenfolge, die den Typ der Bindung angibt, die zum Abrufen von Metadaten über HTTP GET verwendet wird. Diese Einstellung ist optional. Wenn sie nicht angegeben ist, werden die Standardbindungen verwendet. Es werden nur Bindungen mit inneren Bindungselementen IReplyChannel unterstützt. Darüber hinaus muss die MessageVersion Eigenschaft der Bindung sein None. |
| httpGetBindingConfiguration | Eine Zeichenfolge, die den Namen der Bindung festlegt, die httpGetBinding im Attribut angegeben ist, die auf die zusätzlichen Konfigurationsinformationen dieser Bindung verweist. Derselbe Name muss im <bindings> Abschnitt definiert werden. |
| httpGetEnabled | Ein boolescher Wert, der angibt, ob Dienstmetadaten für den Abruf mithilfe einer HTTP/Get-Anforderung veröffentlicht werden sollen. Der Standardwert lautet false.Wenn das httpGetUrl-Attribut nicht angegeben ist, ist die Adresse, an der die Metadaten veröffentlicht werden, die Dienstadresse sowie ein "?wsdl".If the httpGetUrl attribute is not specified, the address at which the metadata is published is the service address plus a "?wsdl". Wenn die Dienstadresse beispielsweise lautet http://localhost:8080/CalculatorService, lautet http://localhost:8080/CalculatorService?wsdldie HTTP/Get-Metadatenadresse .Wenn diese Eigenschaft oder falsedie Adresse des Diensts nicht auf HTTP oder HTTPS basiert, wird "?wsdl" ignoriert. |
| httpGetUrl | Ein URI, der die Adresse angibt, an der die Metadaten mithilfe einer HTTP/Get-Anforderung zum Abrufen veröffentlicht werden. Wenn ein relativer URI angegeben wird, wird er relativ zur Basisadresse des Diensts behandelt. |
| httpsGetBinding | Eine Zeichenfolge, die den Typ der Bindung angibt, die zum Abrufen von Metadaten über HTTPS GET verwendet wird. Diese Einstellung ist optional. Wenn sie nicht angegeben ist, werden die Standardbindungen verwendet. Es werden nur Bindungen mit inneren Bindungselementen IReplyChannel unterstützt. Darüber hinaus muss die MessageVersion Eigenschaft der Bindung sein None. |
| httpsGetBindingConfiguration | Eine Zeichenfolge, die den Namen der Bindung festlegt, die httpsGetBinding im Attribut angegeben ist, die auf die zusätzlichen Konfigurationsinformationen dieser Bindung verweist. Derselbe Name muss im <bindings> Abschnitt definiert werden. |
| httpsGetEnabled | Ein boolescher Wert, der angibt, ob Dienstmetadaten für den Abruf mithilfe einer HTTPS/Get-Anforderung veröffentlicht werden sollen. Der Standardwert lautet false.Wenn das httpsGetUrl-Attribut nicht angegeben ist, ist die Adresse, an der die Metadaten veröffentlicht werden, die Dienstadresse sowie ein "?wsdl".If the httpsGetUrl attribute is not specified, the address at which the metadata is published the service address plus a "?wsdl". Wenn die Dienstadresse beispielsweise lautet https://localhost:8080/CalculatorService, lautet https://localhost:8080/CalculatorService?wsdldie HTTP/Get-Metadatenadresse .Wenn diese Eigenschaft oder falsedie Adresse des Diensts nicht auf HTTP oder HTTPS basiert, wird "?wsdl" ignoriert. |
| httpsGetUrl | Ein URI, der die Adresse angibt, an der die Metadaten mithilfe einer HTTPS/Get-Anforderung zum Abrufen veröffentlicht werden. |
| policyVersion | Eine Zeichenfolge, die die Version der verwendeten WS-Policy Spezifikation angibt. Dieses Attribut ist vom Typ PolicyVersion. |
Untergeordnete Elemente
Nichts
Übergeordnete Elemente
| Element | Description |
|---|---|
| <Benehmen> | Gibt ein Verhaltenselement an. |
Bemerkungen
Mit diesem Konfigurationselement können Sie die Metadatenveröffentlichungsfeatures eines Diensts steuern. Um die unbeabsichtigte Offenlegung potenziell sensibler Dienstmetadaten zu verhindern, deaktiviert die Standardkonfiguration für WCF-Dienste (Windows Communication Foundation) die Metadatenveröffentlichung. Dieses Verhalten ist standardmäßig sicher, bedeutet aber auch, dass Sie kein Metadatenimporttool (z. B. Svcutil.exe) verwenden können, um den zum Aufrufen des Diensts erforderlichen Clientcode zu generieren, es sei denn, das Metadatenveröffentlichungsverhalten des Diensts ist in der Konfiguration explizit aktiviert. Mit diesem Konfigurationselement können Sie dieses Veröffentlichungsverhalten für Ihren Dienst aktivieren.
Ein detailliertes Beispiel für die Konfiguration dieses Verhaltens finden Sie unter Metadatenveröffentlichungsverhalten.
Mit den optionalen httpGetBinding Attributen httpsGetBinding können Sie die Bindungen konfigurieren, die zum Abrufen von Metadaten über HTTP GET (oder HTTPS GET) verwendet werden. Wenn sie nicht angegeben sind, werden die Standardbindungen (HttpTransportBindingElementim Fall von HTTP und HttpsTransportBindingElementim Fall von HTTPS) für den Metadatenabruf entsprechend verwendet. Beachten Sie, dass Sie diese Attribute nicht mit den integrierten WCF-Bindungen verwenden können. Es werden nur Bindungen mit inneren Bindungselementen IReplyChannel unterstützt. Darüber hinaus muss die MessageVersion Eigenschaft der Bindung sein None.
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 dieses Element der Dienstkonfiguration hinzu, und legen Sie das httpsGetEnabled Attribut auf true. 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>
Example
Im folgenden Beispiel wird ein Dienst so konfiguriert, dass Metadaten mithilfe des <serviceMetadata-Elements> verfügbar gemacht werden. Außerdem wird ein Endpunkt so konfiguriert, dass er den IMetadataExchange Vertrag als Implementierung eines WS-MetadataExchange (MEX)-Protokolls verfügbar macht. Im Beispiel wird die mexHttpBindingStandardbindung verwendet, die dem wsHttpBinding sicherheitsmodus entspricht None. Eine relative Adresse von "mex" wird im Endpunkt verwendet, was bei der Auflösung mit der Basisadresse der Dienste zu einer Endpunktadresse von http://localhost/servicemodelsamples/service.svc/mex.
<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>