<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/CalculatorService například adresa služby , adresa metadat HTTP/Get je http://localhost:8080/CalculatorService?wsdl .Pokud je false tato 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/CalculatorService například adresa služby , adresa metadat HTTP/Get je https://localhost:8080/CalculatorService?wsdl .Pokud je false tato 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 (HttpTransportBindingElement
v 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 mexHttpBinding
se 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/mex
bodu .
<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>