Sdílet prostřednictvím


<serviceMetadata>

Určuje publikování metadat služby a souvisejících informací.

<Konfigurace>
  <System.servicemodel>
    <Chování>
      <serviceBehaviors>
        <Chování>
          <serviceMetadata>

Syntax

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

Atributy a elementy

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Atributy

Atribut Popis
externalMetadataLocation Identifikátor URI, který obsahuje umístění souboru WSDL, který je vrácen uživateli v reakci na požadavky WSDL a MEX místo automaticky vygenerovaného WSDL. Pokud tento atribut není nastaven, vrátí se výchozí WSDL. Výchozí hodnota je prázdný řetězec.
httpGetBinding Řetězec, který určuje typ vazby, která se použije pro načtení metadat přes HTTP GET. Toto nastavení je volitelné. Pokud není zadaný, použijí se výchozí vazby.

Budou podporovány pouze vazby s vnitřními prvky vazby, které podporují IReplyChannel . Kromě toho MessageVersion musí být Nonevlastnost vazby .
httpGetBindingConfiguration Řetězec, který nastaví název vazby zadané v atributu httpGetBinding , který odkazuje na další informace o konfiguraci této vazby. Stejný název musí být definován v oddílu <bindings> .
httpGetEnabled Logická hodnota, která určuje, jestli se mají publikovat metadata služby pro načtení pomocí požadavku HTTP/Get. Výchozí formát je false.

Pokud není zadán atribut httpGetUrl, adresa, na které se metadata publikují, je adresa služby plus "?wsdl". Pokud je http://localhost:8080/CalculatorServicenapříklad adresa služby , adresa metadat HTTP/Get je http://localhost:8080/CalculatorService?wsdl.

Pokud je falsetato vlastnost , nebo adresa služby není založena na protokolu HTTP nebo HTTPS, bude soubor "?wsdl" ignorován.
httpGetUrl Identifikátor URI, který určuje adresu, na které se metadata publikují pro načtení pomocí požadavku HTTP/Get. Pokud je zadaný relativní identifikátor URI, bude považován za relativní vzhledem k základní adrese služby.
httpsGetBinding Řetězec, který určuje typ vazby, která se použije pro načítání metadat prostřednictvím HTTPS GET. Toto nastavení je volitelné. Pokud není zadaný, použijí se výchozí vazby.

Budou podporovány pouze vazby s vnitřními prvky vazby, které podporují IReplyChannel . Kromě toho MessageVersion musí být Nonevlastnost vazby .
httpsGetBindingConfiguration Řetězec, který nastaví název vazby zadané v atributu httpsGetBinding , který odkazuje na další informace o konfiguraci této vazby. Stejný název musí být definován v oddílu <bindings> .
httpsGetEnabled Logická hodnota, která určuje, jestli se mají publikovat metadata služby pro načtení pomocí požadavku HTTPS/Get. Výchozí formát je false.

Pokud atribut httpsGetUrl není zadaný, adresa, na které se metadata publikují, je adresa služby plus "?wsdl". Pokud je https://localhost:8080/CalculatorServicenapříklad adresa služby , adresa metadat HTTP/Get je https://localhost:8080/CalculatorService?wsdl.

Pokud je falsetato vlastnost , nebo adresa služby není založena na protokolu HTTP nebo HTTPS, bude soubor "?wsdl" ignorován.
httpsGetUrl Identifikátor URI, který určuje adresu, na které jsou metadata publikována pro načtení pomocí požadavku HTTPS/Get.
policyVersion Řetězec, který určuje verzi použité specifikace WS-Policy. Tento atribut je typu PolicyVersion.

Podřízené elementy

Žádné

Nadřazené elementy

Element Popis
<Chování> Určuje chování element.

Poznámky

Tento element konfigurace umožňuje řídit funkce publikování metadat služby. Aby se zabránilo neúmyslnému zveřejnění potenciálně citlivých metadat služby, výchozí konfigurace pro služby Windows Communication Foundation (WCF) zakáže publikování metadat. Toto chování je ve výchozím nastavení bezpečné, ale také to znamená, že nemůžete použít nástroj pro import metadat (například Svcutil.exe) k vygenerování klientského kódu potřebného k volání služby, pokud není v konfiguraci explicitně povolené chování publikování metadat služby. Pomocí tohoto elementu konfigurace můžete povolit toto chování publikování pro vaši službu.

Podrobný příklad konfigurace tohoto chování najdete v tématu Chování publikování metadat.

Volitelné httpGetBinding atributy a httpsGetBinding umožňují konfigurovat vazby používané pro načítání metadat přes HTTP GET (nebo HTTPS GET). Pokud nejsou zadané, použijí se pro načtení metadat výchozí vazby (HttpTransportBindingElementv případě HTTP a HttpsTransportBindingElement, v případě HTTPS). Všimněte si, že tyto atributy nelze použít s předdefinované vazby WCF. Budou podporovány pouze vazby s vnitřními prvky vazby, které podporují IReplyChannel . Kromě toho MessageVersion musí být Nonevlastnost vazby .

Aby se omezilo vystavení služby uživatelům se zlými úmysly, je možné přenos zabezpečit pomocí mechanismu SSL přes HTTP (HTTPS). Chcete-li to provést, musíte nejprve vytvořit vazbu vhodného certifikátu X.509 na konkrétní port v počítači, který je hostitelem služby. (Další informace najdete v tématu Práce s certifikáty.) Za druhé přidejte tento prvek do konfigurace služby a nastavte httpsGetEnabled atribut na true. Nakonec nastavte httpsGetUrl atribut na adresu URL koncového bodu metadat služby, jak je znázorněno v následujícím příkladu.

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

Příklad

Následující příklad nakonfiguruje službu tak, aby zpřístupňuje metadata pomocí elementu <serviceMetadata> . Také nakonfiguruje koncový bod tak, aby zpřístupnil IMetadataExchange kontrakt jako implementaci protokolu WS-MetadataExchange (MEX). V příkladu mexHttpBindingse používá , což je standardní vazba pro pohodlí, která je ekvivalentní wsHttpBinding s režimem zabezpečení nastaveným na None. V koncovém bodu se používá relativní adresa "mex", což při překladu na základní adresu služeb vede k adrese koncového http://localhost/servicemodelsamples/service.svc/mexbodu .

<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>

Viz také