<serviceMetadata>
Specifica la pubblicazione dei metadati del servizio e delle informazioni associate.
Gerarchia dello schema
<system.serviceModel>
<comportamenti>
<comportamentiServizio>
<behavior> di <serviceBehaviors>
<serviceMetadata>
Sintassi
<serviceMetadata
externalMetadataLocation="String"
httpGetBinding=”String” httpGetBindingConfiguration=”String”
httpGetEnabled="Boolean"
httpGetUrl="String"
httpsGetBinding=”String” httpsGetBindingConfiguration=”String”
httpsGetEnabled="Boolean"
httpsGetUrl="String"
policyVersion="Policy12/Policy15"/>
Attributi ed elementi
Nelle sezioni seguenti vengono descritti attributi, elementi figlio ed elementi padre.
Attributi
Attributo | Descrizione |
---|---|
externalMetadataLocation |
URI contenente il percorso di un file WSDL. Tale file viene restituito all'utente in risposta a richieste WSDL e MEX al posto del file WSDL generato automaticamente. Se questo attributo non viene impostato, viene restituito il file WSDL predefinito. L'impostazione predefinita è una stringa vuota. |
httpGetBinding |
Stringa che specifica il tipo dell'associazione che verrà utilizzata per il recupero di metadati tramite HTTP GET. Questa impostazione è facoltativa. Se non viene specificata, verranno utilizzate le associazioni predefinite. Verranno supportate sole le associazioni con elementi di associazione interni che supportano T:System.ServiceModel.Channels.IReplyChannel. La proprietà P:System.ServiceModel.Channels.MessageVersion dell'associazione deve inoltre essere P:System.ServiceModel.Channels.MessageVersion.None. |
httpGetBindingConfiguration |
Stringa che imposta il nome dell'associazione specificata nell'attributo httpGetBinding che fa riferimento alle informazioni di configurazione aggiuntive di questa associazione. Lo stesso nome deve essere definito nella sezione <bindings>. |
httpGetEnabled |
Valore booleano che specifica se pubblicare metadati di servizio per il recupero utilizzando una richiesta HTTP GET. Il valore predefinito è false. Se l'attributo httpGetUrl non viene specificato, l'indirizzo di pubblicazione dei metadati è l'indirizzo del servizio seguito da "?wsdl". Ad esempio, se l'indirizzo del servizio è "https://localhost:8080/CalculatorService", l'indirizzo di pubblicazione dei metadati tramite una richiesta HTTP GET è "https://localhost:8080/CalculatorService?wsdl". Se questa proprietà è false o se l'indirizzo del servizio non è basato su HTTP o HTTPS, l'elemento "?wsdl" viene ignorato. |
httpGetUrl |
URI che specifica l'indirizzo di pubblicazione dei metadati per il recupero utilizzando una richiesta HTTP GET. |
httpsGetBinding |
Stringa che specifica il tipo dell'associazione che verrà utilizzata per il recupero di metadati tramite HTTPS GET. Questa impostazione è facoltativa. Se non viene specificata, verranno utilizzate le associazioni predefinite. Verranno supportate sole le associazioni con elementi di associazione interni che supportano T:System.ServiceModel.Channels.IReplyChannel. La proprietà P:System.ServiceModel.Channels.MessageVersion dell'associazione deve inoltre essere P:System.ServiceModel.Channels.MessageVersion.None. |
httpsGetBindingConfiguration |
Stringa che imposta il nome dell'associazione specificata nell'attributo httpsGetBinding che fa riferimento alle informazioni di configurazione aggiuntive di questa associazione. Lo stesso nome deve essere definito nella sezione <bindings>. |
httpsGetEnabled |
Valore booleano che specifica se pubblicare metadati di servizio per il recupero utilizzando una richiesta HTTPS GET. Il valore predefinito è false. Se l'attributo httpsGetUrl non viene specificato, l'indirizzo di pubblicazione dei metadati è l'indirizzo del servizio seguito da "?wsdl". Ad esempio, se l'indirizzo del servizio è "https://localhost:8080/CalculatorService", l'indirizzo di pubblicazione dei metadati tramite una richiesta HTTPS GET è "https://localhost:8080/CalculatorService?wsdl". Se questa proprietà è false o se l'indirizzo del servizio non è basato su HTTP o HTTPS, l'elemento "?wsdl" viene ignorato. |
httpsGetUrl |
URI che specifica l'indirizzo di pubblicazione dei metadati per il recupero utilizzando una richiesta HTTPS GET. |
policyVersion |
Stringa che indica la versione della specifica WS-Policy utilizzata. L'attributo è di tipo PolicyVersion. |
Elementi figlio
Nessuno
Elementi padre
Elemento | Descrizione |
---|---|
Specifica un elemento di comportamento. |
Osservazioni
Questo elemento di configurazione consente di controllare le funzionalità di pubblicazione dei metadati di un servizio. Per impedire la rivelazione non intenzionale di metadati del servizio potenzialmente riservati, la configurazione predefinita per i servizi Windows Communication Foundation (WCF) disabilita la pubblicazione dei metadati. Questo comportamento è protetto per impostazione predefinita, ma significa inoltre che non è possibile utilizzare uno strumento di importazione di metadati (ad esempio Svcutil.exe) per generare il codice client necessario per chiamare il servizio, a meno che il comportamento del servizio di pubblicazione dei metadati non venga attivato in modo esplicito in fase di configurazione. Tale elemento di configurazione consente di abilitare questo comportamento di pubblicazione per il servizio.
Per un esempio dettagliato del codice di configurazione di questo comportamento, vedere Metadata Publishing Behavior.
Gli attributi httpGetBinding e httpsGetBinding facoltativi consentono di configurare le associazioni utilizzate per il recupero di metadati tramite HTTP GET (o HTTPS GET). Se non vengono specificati, per il recupero dei metadati verranno utilizzate le associazioni predefinite (HttpTransportBindingElement per HTTP e HttpsTransportBindingElement per HTTPS) a seconda dei casi. Si noti che non è possibile utilizzare questi attributi con le associazioni WCF incorporate. Verranno supportate sole le associazioni con elementi di associazione interni che supportano IReplyChannel. La proprietà MessageVersion dell'associazione deve inoltre essere None.
Per ridurre l'esposizione di un servizio agli utenti malintenzionati, questo trasferimento può essere protetto mediante il meccanismo HTTPS (ovvero SSL su HTTP). A tale scopo, è anzitutto necessario associare un certificato X.509 adatto a una porta specifica del computer che ospita il servizio. (Per ulteriori informazioni, vedere Working with Certificates.) Aggiungere quindi questo elemento alla configurazione del servizio e impostare l'attributo httpsGetEnabled su true. Impostare infine l'attributo httpsGetUrl sull'URL dell'endpoint dei metadati del servizio, come illustrato nell'esempio seguente.
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior">
<serviceMetadata httpsGetEnabled="true"
httpsGetUrl="https://myComputerName/myEndpoint" />
</behavior>
</serviceBehaviors>
</behaviors>
Esempio
Nell'esempio seguente viene configurato un servizio per esporre metadati tramite l'elemento <serviceMetadata>. Viene inoltre configurato un endpoint per esporre il contratto IMetadataExchange come un'implementazione di un protocollo WS-MetadataExchange (MEX). Nell'esempio viene utilizzata l'associazione mexHttpBinding, ovvero un'utile associazione standard equivalente all'associazione wsHttpBinding con la modalità di sicurezza impostata su None. Nell'endpoint viene utilizzato un indirizzo relativo "mex" che, quando risolto rispetto all'indirizzo di base dei servizi, produce l'indirizzo di endpoint "https://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: https://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at https://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. https://localhost/servicemodelsamples/service.svc?wsdl -->
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Vedere anche
Riferimento
ServiceMetadataPublishingElement
ServiceMetadataBehavior