Delen via


Procedure: MetadataExchangeClient gebruiken om metagegevens op te halen

Gebruik de MetadataExchangeClient klasse om metagegevens te downloaden met behulp van het WS-MetadataExchange-protocol (MEX). De opgehaalde metagegevensbestanden worden geretourneerd als een MetadataSet object. Het geretourneerde MetadataSet object bevat een verzameling MetadataSection objecten, die elk een specifiek dialect voor metagegevens en een id bevatten. U kunt de geretourneerde metagegevens naar bestanden schrijven of, als de geretourneerde metagegevens WSDL-documenten (Web Services Description Language) bevatten, kunt u de metagegevens importeren met behulp van de WsdlImporter.

De MetadataExchangeClient constructors die een adres gebruiken, gebruiken de binding voor de MetadataExchangeBindings statische klasse die overeenkomt met het URI-schema (Uniform Resource Identifier) van het adres. U kunt ook de MetadataExchangeClient constructor gebruiken waarmee u expliciet de binding kunt opgeven die moet worden gebruikt. De opgegeven binding wordt gebruikt om alle metagegevensverwijzingen op te lossen.

Net als elke andere WCF-client (Windows Communication Foundation) biedt het type een constructor voor het MetadataExchangeClient laden van clienteindpuntconfiguraties met behulp van de naam van de eindpuntconfiguratie. De opgegeven eindpuntconfiguratie moet het IMetadataExchange contract opgeven. Het adres in de eindpuntconfiguratie wordt niet geladen, dus u moet een van de GetMetadata overbelastingen gebruiken die een adres innemen. Wanneer u het metagegevensadres opgeeft met behulp van een EndpointAddress exemplaar, MetadataExchangeClient wordt ervan uitgegaan dat het adres verwijst naar een MEX-eindpunt. Als u het metagegevensadres opgeeft als URL, moet u ook opgeven welke MetadataExchangeClientMode u wilt gebruiken, MEX of HTTP GET.

Belangrijk

MetadataExchangeClient Standaard worden alle verwijzingen voor u omgezet, met inbegrip van WSDL- en XML-schema-import en -insluiting. U kunt deze functionaliteit uitschakelen door de ResolveMetadataReferences eigenschap in te stellen op false. U kunt het maximum aantal verwijzingen bepalen dat moet worden omgezet met behulp van de MaximumResolvedReferences eigenschap. U kunt deze eigenschap gebruiken in combinatie met de MaxReceivedMessageSize eigenschap op de binding om te bepalen hoeveel metagegevens worden opgehaald.

MetadataExchangeClient gebruiken om metagegevens te verkrijgen

  1. Maak een nieuw MetadataExchangeClient object door expliciet een binding, een eindpuntconfiguratienaam of het adres van de metagegevens op te geven.

  2. Configureer de MetadataExchangeClient configuratie die aan uw behoeften voldoet. U kunt bijvoorbeeld referenties opgeven die moeten worden gebruikt bij het aanvragen van metagegevens, bepalen hoe metagegevensverwijzingen worden omgezet en de OperationTimeout eigenschap instellen om te bepalen hoe lang de metagegevensaanvraag moet worden geretourneerd voordat er een time-out optreedt.

  3. Haal het MetadataSet object op dat de opgehaalde metagegevens bevat door een van de GetMetadata methoden aan te roepen. Houd er rekening mee dat u alleen de GetMetadata overbelasting kunt gebruiken die geen argumenten accepteert als u expliciet een adres hebt opgegeven bij het samenstellen van de MetadataExchangeClient.

Opmerking

In het volgende codevoorbeeld ziet u hoe MetadataExchangeClient u metagegevensbestanden downloadt en opsommen.

// 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);

De code compileren

Als u dit codevoorbeeld wilt compileren, moet u verwijzen naar de System.ServiceModel.dll assembly en de System.ServiceModel.Description naamruimte importeren.

Zie ook