Procedimiento para usar MetadataExchangeClient para recuperar metadatos
Utilice la clase MetadataExchangeClient para descargar metadatos mediante el protocolo WS-MetadataExchange (MEX). Los archivos de metadatos recuperados se devuelven como un objeto MetadataSet. El objeto MetadataSet devuelto contiene una colección de objetos MetadataSection, cada uno de los cuales contiene un dialecto de metadatos concreto y un identificador. Puede escribir los metadatos devueltos en los archivos o, si éstos contienen los documentos del Lenguaje de descripción de servicios Web (WSDL), podrá importar los metadatos mediante WsdlImporter.
Los constructores MetadataExchangeClient que toman una dirección utilizan el enlace en la clase estática MetadataExchangeBindings que coincide con el esquema del Identificador uniforme de recursos (URI) de la dirección. Puede utilizar alternativamente el constructor MetadataExchangeClient que le permite especificar explícitamente el enlace que vaya a utilizar. El enlace especificado se utiliza para resolver todas las referencias de los metadatos.
Al igual que cualquier otro cliente de la aplicación Windows Communication Foundation (WCF), el tipo MetadataExchangeClient proporciona un constructor para cargar configuraciones de punto de conexión de cliente mediante el nombre de configuración del punto de conexión. La configuración del punto de conexión especificada debe especificar el contrato IMetadataExchange. No se carga la dirección en la configuración del punto de conexión, por lo que debe utilizar una de las sobrecargas GetMetadata que toman una dirección. Cuando se especifica la dirección de los metadatos que utilizan una instancia EndpointAddress, el MetadataExchangeClient asume que la dirección señala a un punto de conexión MEX. Si especifica la dirección de los metadatos como una dirección URL, a continuación, también necesita especificar qué MetadataExchangeClientMode utilizar, MEX o HTTP GET.
Importante
De forma predeterminada, MetadataExchangeClient resuelve todas las referencias para el usuario, incluidas las importaciones e inclusiones de esquema WSDL y XML. Puede deshabilitar esta funcionalidad definiendo la propiedad ResolveMetadataReferences en false
. Puede controlar el número máximo de referencias que resolver utilizando la propiedad MaximumResolvedReferences. Puede utilizar esta propiedad junto con la propiedad MaxReceivedMessageSize
en el enlace para controlar cuántos metadatos se recuperan.
Para utilizar MetadataExchangeClient para obtener metadatos
Cree un nuevo objeto MetadataExchangeClient especificando explícitamente un enlace, un nombre de configuración de punto de conexión o la dirección de los metadatos.
Configure MetadataExchangeClient para ajustarlo a sus necesidades. Por ejemplo, puede especificar las credenciales que se van a usar cuando se solicitan metadatos, controlar cómo se resuelven las referencias a metadatos y definir la propiedad OperationTimeout para controlar cuánto tiempo tiene la solicitud de los metadatos para volver antes de caducar.
Obtenga el objeto MetadataSet que contiene los metadatos recuperados llamando a uno de los métodos GetMetadata. Observe que solo puede utilizar la sobrecarga GetMetadata que no toma ningún argumento si especificó explícitamente una dirección al construir MetadataExchangeClient.
Ejemplo
El ejemplo de código siguiente muestra cómo utilizar MetadataExchangeClient para descargar y enumerar los archivos de metadatos.
// 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);
Compilar el código
Para compilar este ejemplo de código, debe hacer referencia al ensamblado System.ServiceModel.dll e importar el espacio de nombres System.ServiceModel.Description.