Procedura: usare MetadataExchangeClient per il recupero di metadati
Utilizzare la classe MetadataExchangeClient per scaricare metadati utilizzando il protocollo WS-MetadataExchange (MEX). I file dei metadati recuperati vengono restituiti come oggetti MetadataSet. L'oggetto MetadataSet restituito contiene una raccolta di oggetti MetadataSection, ognuno dei quali contiene a sua volta un sottolinguaggio dei metadati specifici e un identificatore. I metadati restituiti possono essere scritti in file o, se contengono documenti WSDL (Web Services Description Language), possono essere importati utilizzando WsdlImporter.
I costruttori MetadataExchangeClient che accettano un indirizzo utilizzano l'associazione sulla classe statica MetadataExchangeBindings che corrisponde allo schema URI (Uniform Resource Identifier) dell'indirizzo. In alternativa, è possibile utilizzare il costruttore MetadataExchangeClient, che consente di specificare in modo esplicito l'associazione da utilizzare. L'associazione specificata viene utilizzata per risolvere tutti i riferimenti ai metadati.
Come qualsiasi altro client WCF (Windows Communication Foundation), il tipo MetadataExchangeClient fornisce un costruttore per il caricamento di configurazioni dell'endpoint client utilizzando il nome di configurazione dell'endpoint. La configurazione dell'endpoint specificata deve contenere il contratto IMetadataExchange. Poiché l'indirizzo nella configurazione dell'endpoint non viene caricato, è necessario utilizzare uno degli overload GetMetadata che accettano un indirizzo. Quando si specifica l'indirizzo dei metadati utilizzando un'istanza della classe EndpointAddress, la classe MetadataExchangeClient presuppone che l'indirizzo punti a un endpoint MEX. Se si specifica l'indirizzo dei metadati come URL, è necessario specificare anche quale MetadataExchangeClientMode utilizzare, MEX o HTTP GET.
Importante
Per impostazione predefinita, la classe MetadataExchangeClient risolve tutti i riferimenti, comprese le importazioni e le inclusioni dello schema WSDL e XML. Questa funzionalità può essere disattivata impostando la proprietà ResolveMetadataReferences su false
. È possibile controllare il numero massimo di riferimenti da risolvere utilizzando la proprietà MaximumResolvedReferences. Tale proprietà può essere utilizzata insieme alla proprietà MaxReceivedMessageSize
sull'associazione per controllare la quantità di metadati recuperata.
Per utilizzare MetadataExchangeClient per ottenere metadati
Creare un nuovo oggetto MetadataExchangeClient specificando in modo esplicito un'associazione, un nome di configurazione dell'endpoint o l'indirizzo dei metadati.
Configurare MetadataExchangeClient in base alle esigenze. Ad esempio, è possibile specificare credenziali da utilizzare quando si richiedono metadati, controllare il modo in cui vengono risolti i riferimenti ai metadati e impostare la proprietà OperationTimeout per controllare il tempo entro cui la richiesta deve restituire i metadati prima del timout.
Ottenere l'oggetto MetadataSet contenete i metadati recuperati chiamando uno dei metodi GetMetadata. Si noti che è possibile utilizzare solo l'overload GetMetadata che non accetta argomenti nel caso in cui sia stato specificato in modo esplicito un indirizzo durante la costruzione di MetadataExchangeClient.
Esempio
Nell'esempio di codice seguente viene illustrato come utilizzare MetadataExchangeClient per scaricare ed enumerare i file di metadati.
// Get metadata documents.
Console.WriteLine("URI of the metadata documents retrieved:");
MetadataExchangeClient metaTransfer
= new MetadataExchangeClient(httpGetMetaAddress.Uri, MetadataExchangeClientMode.HttpGet);
metaTransfer.ResolveMetadataReferences = true;
MetadataSet otherDocs = metaTransfer.GetMetadata();
foreach (MetadataSection doc in otherDocs.MetadataSections)
Console.WriteLine(doc.Dialect + " : " + doc.Identifier);
Compilazione del codice
Per compilare questo esempio di codice, è necessario fare riferimento all'assembly System.ServiceModel.dll e importare lo spazio dei nomi System.ServiceModel.Description.