<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?wsdl HTTP/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?wsdl HTTP/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 (HttpTransportBindingElement
nä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>