Delen via


<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/CalculatorServicehttp://localhost:8080/CalculatorService?wsdlhet 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/CalculatorServicehttps://localhost:8080/CalculatorService?wsdlhet 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 (HttpTransportBindingElementin 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 mexHttpBindinggebruikt. 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>

Zie ook