Compartilhar via


Como: usar MetadataResolver para obter metadados de associação dinamicamente

Este tópico mostra como usar a classe MetadataResolver para obter metadados de associação dinamicamente.

Para obter metadados de associação dinamicamente

  1. Crie um objeto EndpointAddress com o endereço do ponto de extremidade de metadados.

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Chame Resolve(Type, EndpointAddress), que passa no tipo de serviço e no endereço do ponto de extremidade de metadados. Isso retorna uma coleção de pontos de extremidade que implementam o contrato especificado. Somente as informações de associação são importadas dos metadados; as informações do contrato não são importadas. Em vez disso, o contrato fornecido é usado.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Em seguida, você pode iterar por meio da coleção de pontos de extremidade de serviço para extrair as informações de associação necessárias. O código a seguir itera por meio dos pontos de extremidade, cria um objeto cliente de serviço que passa na associação e no endereço associados ao ponto de extremidade atual e chama um método no serviço.

    foreach (ServiceEndpoint point in endpoints)  
    {  
       if (point != null)  
       {  
          // Create a new wcfClient using retrieved endpoints.  
          using (wcfClient = new SampleServiceClient(point.Binding, point.Address))  
          {  
             Console.WriteLine(  
               wcfClient.SampleMethod("Client used the "  
               + point.Address.ToString() + " address."));  
          }  
      }  
    }  
    

Confira também