<serviceMetadata>
Hiermee geeft u de publicatie van servicemetagegevens en bijbehorende informatie.
<Configuratie>
<system.serviceModel>
<Gedrag>
<serviceBehaviors>
<Gedrag>
<serviceMetadata>
Syntax
<serviceMetadata externalMetadataLocation="String"
httpGetBinding="String"
httpGetBindingConfiguration="String"
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding="String"
httpsGetBindingConfiguration="String"
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15" />
Kenmerken en elementen
In de volgende secties worden kenmerken, onderliggende elementen en bovenliggende elementen beschreven.
Kenmerken
Kenmerk | Beschrijving |
---|---|
externalMetadataLocation | Een URI die de locatie van een WSDL-bestand bevat, dat naar de gebruiker wordt geretourneerd als reactie op WSDL- en MEX-aanvragen in plaats van de automatisch gegenereerde WSDL. Wanneer dit kenmerk niet is ingesteld, wordt de standaard WSDL geretourneerd. De standaardwaarde is een lege tekenreeks. |
httpGetBinding | Een tekenreeks die het type binding aangeeft dat wordt gebruikt voor het ophalen van metagegevens via HTTP GET. Deze instelling is optioneel. Als deze niet is opgegeven, worden de standaardbindingen gebruikt. Alleen bindingen met binnenste bindingselementen die ondersteuning bieden IReplyChannel , worden ondersteund. Daarnaast moet de MessageVersion eigenschap van de binding zijn None. |
httpGetBindingConfiguration | Een tekenreeks waarmee de naam wordt ingesteld van de binding die is opgegeven in het httpGetBinding kenmerk, die verwijst naar de aanvullende configuratie-informatie van deze binding. Dezelfde naam moet worden gedefinieerd in de <bindings> sectie. |
httpGetEnabled | Een Booleaanse waarde die aangeeft of metagegevens van de service moeten worden gepubliceerd voor ophalen met behulp van een HTTP-/Get-aanvraag. De standaardwaarde is false .Als het kenmerk httpGetUrl niet is opgegeven, is het adres waarop de metagegevens worden gepubliceerd het serviceadres plus een '?wsdl'. Als het serviceadres bijvoorbeeld is, is http://localhost:8080/CalculatorService http://localhost:8080/CalculatorService?wsdl het HTTP/Get-metagegevensadres .Als deze eigenschap is false , of als het adres van de service niet is gebaseerd op HTTP of HTTPS, wordt '?wsdl' genegeerd. |
httpGetUrl | Een URI die het adres aangeeft waarop de metagegevens worden gepubliceerd voor ophalen met behulp van een HTTP/Get-aanvraag. Als een relatieve URI is opgegeven, wordt deze behandeld als relatief ten opzichte van het basisadres van de service. |
httpsGetBinding | Een tekenreeks die het type binding aangeeft dat wordt gebruikt voor het ophalen van metagegevens via HTTPS GET. Deze instelling is optioneel. Als deze niet is opgegeven, worden de standaardbindingen gebruikt. Alleen bindingen met binnenste bindingselementen die ondersteuning bieden IReplyChannel , worden ondersteund. Daarnaast moet de MessageVersion eigenschap van de binding zijn None. |
httpsGetBindingConfiguration | Een tekenreeks waarmee de naam wordt ingesteld van de binding die is opgegeven in het httpsGetBinding kenmerk, die verwijst naar de aanvullende configuratie-informatie van deze binding. Dezelfde naam moet worden gedefinieerd in de <bindings> sectie. |
httpsGetEnabled | Een Booleaanse waarde die aangeeft of metagegevens van de service moeten worden gepubliceerd voor ophalen met behulp van een HTTPS/Get-aanvraag. De standaardwaarde is false .Als het kenmerk httpsGetUrl niet is opgegeven, is het adres waarop de metagegevens worden gepubliceerd het serviceadres plus een '?wsdl'. Als het serviceadres bijvoorbeeld is, is https://localhost:8080/CalculatorService https://localhost:8080/CalculatorService?wsdl het HTTP/Get-metagegevensadres .Als deze eigenschap is false , of als het adres van de service niet is gebaseerd op HTTP of HTTPS, wordt '?wsdl' genegeerd. |
httpsGetUrl | Een URI die het adres aangeeft waarop de metagegevens worden gepubliceerd voor ophalen met behulp van een HTTPS/Get-aanvraag. |
policyVersion | Een tekenreeks die de versie aangeeft van de WS-Policy-specificatie die wordt gebruikt. Dit kenmerk is van het type PolicyVersion. |
Onderliggende elementen
Geen
Bovenliggende elementen
Element | Beschrijving |
---|---|
<Gedrag> | Hiermee geeft u een gedragselement op. |
Opmerkingen
Met dit configuratie-element kunt u de functies voor het publiceren van metagegevens van een service beheren. Om onbedoelde openbaarmaking van mogelijk gevoelige servicemetagegevens te voorkomen, schakelt de standaardconfiguratie voor WCF-services (Windows Communication Foundation) het publiceren van metagegevens uit. Dit gedrag is standaard beveiligd, maar betekent ook dat u geen hulpprogramma voor het importeren van metagegevens (zoals Svcutil.exe) kunt gebruiken om de clientcode te genereren die nodig is om de service aan te roepen, tenzij het publicatiegedrag van metagegevens van de service expliciet is ingeschakeld in de configuratie. Met dit configuratie-element kunt u dit publicatiegedrag inschakelen voor uw service.
Zie Gedrag bij het publiceren van metagegevens voor een gedetailleerd voorbeeld van het configureren van dit gedrag.
Met de optionele httpGetBinding
kenmerken en httpsGetBinding
kunt u de bindingen configureren die worden gebruikt voor het ophalen van metagegevens via HTTP GET (of HTTPS GET). Als deze niet zijn opgegeven, worden de standaardbindingen (HttpTransportBindingElement
in het geval van HTTP en HttpsTransportBindingElement
, in het geval van HTTPS) gebruikt voor het ophalen van metagegevens, indien van toepassing. U ziet dat u deze kenmerken niet kunt gebruiken met de ingebouwde WCF-bindingen. Alleen bindingen met binnenste bindingselementen die ondersteuning bieden IReplyChannel , worden ondersteund. Daarnaast moet de MessageVersion eigenschap van de binding zijn None.
Om de blootstelling van een service aan kwaadwillende gebruikers te beperken, is het mogelijk om de overdracht te beveiligen met behulp van het HTTPS-mechanisme (SSL via HTTP). Hiervoor moet u eerst een geschikt X.509-certificaat verbinden met een specifieke poort op de computer waarop de service wordt gehost. (Zie Werken met certificaten voor meer informatie.) Voeg ten tweede dit element toe aan de serviceconfiguratie en stel het httpsGetEnabled
kenmerk in op true
. Stel ten slotte het httpsGetUrl
kenmerk in op de URL van het eindpunt voor servicemetagegevens, zoals wordt weergegeven in het volgende voorbeeld.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Voorbeeld
In het volgende voorbeeld wordt een service geconfigureerd om metagegevens beschikbaar te maken met behulp van het <element serviceMetadata> . Er wordt ook een eindpunt geconfigureerd om het IMetadataExchange
contract beschikbaar te maken als een implementatie van een MEX-protocol (WS-MetadataExchange). In het voorbeeld wordt de mexHttpBinding
gebruikt. Dit is een standaardbinding voor het gemak die gelijk is aan de wsHttpBinding
met de beveiligingsmodus ingesteld op None
. Een relatief adres van 'mex' wordt gebruikt in het eindpunt, dat wanneer deze wordt omgezet op basis van het basisadres van de services, resulteert in een eindpuntadres van 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>