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
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"));
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);
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.")); } } }