Partilhar via


Como: Usar MetadataExchangeClient para recuperar metadados

Use a MetadataExchangeClient classe para baixar metadados usando o protocolo WS-MetadataExchange (MEX). Os arquivos de metadados recuperados são retornados como um MetadataSet objeto. O objeto retornado MetadataSet contém uma coleção de MetadataSection objetos, cada um dos quais contém um dialeto de metadados específico e um identificador. Você pode gravar os metadados retornados em arquivos ou, se os metadados retornados contiverem documentos WSDL (Web Services Description Language), poderá importar os metadados usando o WsdlImporter.

Os MetadataExchangeClient construtores que usam um endereço usam a associação na MetadataExchangeBindings classe estática que corresponde ao esquema URI (Uniform Resource Identifier) do endereço. Como alternativa, você pode usar o MetadataExchangeClient construtor que permite especificar explicitamente a associação a ser usada. A associação especificada é usada para resolver todas as referências de metadados.

Assim como qualquer outro cliente Windows Communication Foundation (WCF), o MetadataExchangeClient tipo fornece um construtor para carregar configurações de ponto de extremidade do cliente usando o nome de configuração do ponto de extremidade. A configuração de ponto de extremidade especificada deve especificar o IMetadataExchange contrato. O endereço na configuração do ponto de extremidade não é carregado, portanto, você deve usar uma das GetMetadata sobrecargas que usam um endereço. Quando você especifica o endereço de metadados usando uma EndpointAddress instância, o MetadataExchangeClient pressupõe que o endereço aponta para um ponto de extremidade MEX. Se você especificar o endereço de metadados como uma URL, precisará especificar também qual MetadataExchangeClientMode usar, MEX ou HTTP GET.

Importante

Por padrão, o MetadataExchangeClient resolve todas as referências para você, incluindo importações WSDL e esquema XML e inclui. Você pode desativar essa funcionalidade definindo a ResolveMetadataReferences propriedade como false. Você pode controlar o número máximo de referências a serem resolvidas usando a MaximumResolvedReferences propriedade. Você pode usar essa propriedade em conjunto com a MaxReceivedMessageSize propriedade na associação para controlar a quantidade de metadados recuperados.

Para usar MetadataExchangeClient para obter metadados

  1. Crie um novo MetadataExchangeClient objeto especificando explicitamente uma ligação, um nome de configuração de ponto de extremidade ou o endereço dos metadados.

  2. Configure o MetadataExchangeClient para atender às suas necessidades. Por exemplo, você pode especificar credenciais a serem usadas ao solicitar metadados, controlar como as referências de metadados são resolvidas e definir a OperationTimeout propriedade para controlar por quanto tempo a solicitação de metadados deve retornar antes de atingir o tempo limite.

  3. Obtenha o MetadataSet objeto que contém os metadados recuperados chamando um dos GetMetadata métodos. Observe que você só pode usar a GetMetadata sobrecarga que não usa argumentos se tiver especificado explicitamente um endereço ao construir o MetadataExchangeClient.

Exemplo

O exemplo de código a seguir mostra como usar MetadataExchangeClient para baixar e enumerar arquivos de metadados.

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

Compilando o código

Para compilar este exemplo de código, você deve fazer referência ao assembly System.ServiceModel.dll e importar o System.ServiceModel.Description namespace.

Consulte também