Dela via


<serviceMetadata>

Anger publiceringen av tjänstens metadata och tillhörande information.

<Konfiguration>
  <system.serviceModel>
    <Beteenden>
      <serviceBehaviors>
        <Beteende>
          <serviceMetadata>

Syntax

<serviceMetadata externalMetadataLocation="String"
                 httpGetBinding="String"
                 httpGetBindingConfiguration="String"
                 httpGetEnabled="Boolean"
                 httpGetUrl="String"
                 httpsGetBinding="String"
                 httpsGetBindingConfiguration="String"
                 httpsGetEnabled="Boolean"
                 httpsGetUrl="String"
                 policyVersion="Policy12/Policy15" />

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attribut

Attribut Beskrivning
externalMetadataLocation En URI som innehåller platsen för en WSDL-fil, som returneras till användaren som svar på WSDL- och MEX-begäranden i stället för den automatiskt genererade WSDL:n. När det här attributet inte har angetts returneras standard-WSDL. Standardvärdet är en tom sträng.
httpGetBinding En sträng som anger vilken typ av bindning som ska användas för metadatahämtning via HTTP GET. Den här inställningen är valfri. Om den inte anges används standardbindningarna.

Endast bindningar med inre bindningselement som stöder IReplyChannel stöds. Dessutom måste egenskapen för MessageVersion bindningen vara None.
httpGetBindingConfiguration En sträng som anger namnet på bindningen som anges i httpGetBinding attributet, som refererar till ytterligare konfigurationsinformation för den här bindningen. Samma namn måste definieras i avsnittet <bindings> .
httpGetEnabled Ett booleskt värde som anger om tjänstens metadata ska publiceras för hämtning med hjälp av en HTTP/Get-begäran. Standardvärdet är false.

Om attributet httpGetUrl inte anges är adressen där metadata publiceras tjänstadressen plus ett "?wsdl". Om tjänstadressen till exempel är http://localhost:8080/CalculatorServiceär http://localhost:8080/CalculatorService?wsdlHTTP/Get-metadataadressen .

Om den här egenskapen är false, eller om adressen till tjänsten inte baseras på HTTP eller HTTPS, ignoreras "?wsdl".
httpGetUrl En URI som anger adressen där metadata publiceras för hämtning med hjälp av en HTTP/Get-begäran. Om en relativ URI anges behandlas den som relativ till tjänstens basadress.
httpsGetBinding En sträng som anger vilken typ av bindning som ska användas för metadatahämtning via HTTPS GET. Den här inställningen är valfri. Om den inte anges används standardbindningarna.

Endast bindningar med inre bindningselement som stöder IReplyChannel stöds. Dessutom måste egenskapen för MessageVersion bindningen vara None.
httpsGetBindingConfiguration En sträng som anger namnet på bindningen som anges i httpsGetBinding attributet, som refererar till ytterligare konfigurationsinformation för den här bindningen. Samma namn måste definieras i avsnittet <bindings> .
httpsGetEnabled Ett booleskt värde som anger om tjänstens metadata ska publiceras för hämtning med hjälp av en HTTPS/Get-begäran. Standardvärdet är false.

Om attributet httpsGetUrl inte anges är adressen där metadata publiceras tjänstadressen plus "?wsdl". Om tjänstadressen till exempel är https://localhost:8080/CalculatorServiceär https://localhost:8080/CalculatorService?wsdlHTTP/Get-metadataadressen .

Om den här egenskapen är false, eller om adressen till tjänsten inte baseras på HTTP eller HTTPS, ignoreras "?wsdl".
httpsGetUrl En URI som anger adressen där metadata publiceras för hämtning med hjälp av en HTTPS/Get-begäran.
policyVersion En sträng som anger vilken version av WS-Policy-specifikationen som används. Det här attributet är av typen PolicyVersion.

Underordnade element

Ingen

Överordnade element

Element Beskrivning
<Beteende> Anger ett beteendeelement.

Kommentarer

Med det här konfigurationselementet kan du styra publiceringsfunktionerna för metadata för en tjänst. För att förhindra oavsiktligt avslöjande av potentiellt känsliga tjänstmetadata inaktiverar standardkonfigurationen för WCF-tjänster (Windows Communication Foundation) metadatapublicering. Det här beteendet är säkert som standard, men innebär också att du inte kan använda ett verktyg för metadataimport (till exempel Svcutil.exe) för att generera den klientkod som krävs för att anropa tjänsten om inte tjänstens beteende för metadatapublicering uttryckligen är aktiverat i konfigurationen. Med det här konfigurationselementet kan du aktivera det här publiceringsbeteendet för din tjänst.

Ett detaljerat exempel på hur du konfigurerar det här beteendet finns i Beteende för metadatapublicering.

Med de valfria httpGetBinding attributen och httpsGetBinding kan du konfigurera bindningar som används för metadatahämtning via HTTP GET (eller HTTPS GET). Om de inte anges används standardbindningarna (HttpTransportBindingElementnär det gäller HTTP och HttpsTransportBindingElement, när det gäller HTTPS) för metadatahämtning efter behov. Observera att du inte kan använda dessa attribut med de inbyggda WCF-bindningarna. Endast bindningar med inre bindningselement som stöder IReplyChannel stöds. Dessutom måste egenskapen för MessageVersion bindningen vara None.

För att minska exponeringen av en tjänst för skadliga användare är det möjligt att skydda överföringen med hjälp av mekanismen SSL över HTTP (HTTPS). För att göra det måste du först binda ett lämpligt X.509-certifikat till en specifik port på den dator som är värd för tjänsten. (Mer information finns i Arbeta med certifikat.) För det andra lägger du till det här elementet i tjänstkonfigurationen och anger httpsGetEnabled attributet till true. httpsGetUrl Ange slutligen attributet till URL:en för tjänstmetadataslutpunkten, som du ser i följande exempel.

<behaviors>
  <serviceBehaviors>
    <behavior name="NewBehavior">
      <serviceMetadata httpsGetEnabled="true"
                       httpsGetUrl="https://myComputerName/myEndpoint" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Exempel

I följande exempel konfigurerar du en tjänst för att exponera metadata med hjälp av elementet <serviceMetadata> . Den konfigurerar också en slutpunkt för att exponera IMetadataExchange kontraktet som en implementering av ett mex-protokoll (WS-MetadataExchange). I exemplet används mexHttpBinding, som är en bekvämlighetsstandardbindning som motsvarar wsHttpBinding med säkerhetsläget inställt på None. En relativ adress för "mex" används i slutpunkten, som när den matchas mot tjänstens basadress resulterar i en slutpunktsadress för 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>

Se även