Partilhar via


Como: Usar MetadataResolver para obter metadados de vinculação dinamicamente

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

Para obter dinamicamente metadados de vinculação

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

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Chamada Resolve(Type, EndpointAddress), que passa o tipo de serviço e o endereço do ponto de extremidade de metadados. Isso retorna uma coleção de pontos de extremidade que implementam o contrato especificado. Apenas informações de vinculação são importadas dos metadados; As informações contratuais não são importadas. Em vez disso, utiliza-se o contrato de fornecimento.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Em seguida, você pode iterar através da coleção de pontos de extremidade de serviço para extrair as informações de vinculação necessárias. O código a seguir itera pelos pontos de extremidade, cria um objeto de cliente de serviço que passa a associação e o endereço associados ao ponto de extremidade atual e, em seguida, 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."));  
          }  
      }  
    }  
    

Consulte também