<serviceMetadata>

Určuje publikování metadat služby a přidružených informací.

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata>

Syntaxe

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

Atributy a prvky

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

Attributes

Vlastnost Description
externalMetadataLocation Identifikátor URI, který obsahuje umístění souboru WSDL, který se vrátí uživateli v reakci na požadavky WSDL a MEX místo automaticky generované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čítání 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 . MessageVersion Dále musí být Nonevlastnost vazby .
httpGetBindingConfiguration Řetězec, který nastaví název vazby zadané v atributu httpGetBinding , který odkazuje na další konfigurační informace 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í hodnota je false.

Pokud není zadán atribut httpGetUrl, adresa, na které jsou metadata publikována, je adresa služby plus "?wsdl". Pokud je http://localhost:8080/CalculatorServiceadresa služby například , 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, "?wsdl" se ignoruje.
httpGetUrl Identifikátor URI, který určuje adresu, na které se metadata publikuje 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 k načítání metadat přes 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 . MessageVersion Dále musí být Nonevlastnost vazby .
httpsGetBindingConfiguration Řetězec, který nastaví název vazby zadané v atributu httpsGetBinding , který odkazuje na další konfigurační informace 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í hodnota je false.

Pokud není zadaný atribut httpsGetUrl, adresa, na které jsou metadata publikována, je adresa služby plus "?wsdl". Pokud je https://localhost:8080/CalculatorServiceadresa služby například , 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, "?wsdl" se ignoruje.
httpsGetUrl Identifikátor URI, který určuje adresu, na které se metadata publikuje 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é prvky

None

Nadřazené prvky

prvek Description
<chování> Určuje prvek chování.

Poznámky

Tento element konfigurace umožňuje řídit funkce publikování metadat služby. Aby se zabránilo neúmyslnému zpřístupnění potenciálně citlivých metadat služby, výchozí konfigurace pro služby WCF (Windows Communication Foundation) zakáže publikování metadat. Toto chování je ve výchozím nastavení zabezpečené, ale také to znamená, že nemůžete použít nástroj pro import metadat (například Svcutil.exe) k vygenerování kódu klienta potřebného k volání služby, pokud není explicitně povolené chování publikování metadat služby v konfiguraci. Pomocí tohoto konfiguračního prvku 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 a httpsGetBinding atributy umožňují konfigurovat vazby používané pro načítání metadat přes HTTP GET (nebo HTTPS GET). Pokud nejsou zadané, použijí se výchozí vazby (HttpTransportBindingElementv případě HTTP a HttpsTransportBindingElementv případě HTTPS) pro načítání metadat podle potřeby. Všimněte si, že tyto atributy nelze použít s integrovanými vazbami WCF. Budou podporovány pouze vazby s vnitřními prvky vazby, které podporují IReplyChannel . MessageVersion Dále musí být Nonevlastnost vazby .

Aby se snížila expozice služby škodlivým uživatelům, je možné zabezpečit přenos pomocí mechanismu SSL přes HTTP (HTTPS). Abyste to mohli udělat, 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 naleznete 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>

Example

Následující příklad nakonfiguruje službu tak, aby zpřístupnil metadata pomocí elementu <serviceMetadata> . Nakonfiguruje také koncový bod tak, aby zpřístupnil IMetadataExchange kontrakt jako implementaci protokolu WS-MetadataExchange (MEX). Příklad používá mexHttpBinding, což je pohodlí standardní vazba, která je ekvivalentní wsHttpBinding s režimem zabezpečení nastaveným na None. V koncovém bodu se používá relativní adresa "mex", která 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é