Cómo: Utilizar MetadataResolver para obtener dinámicamente metadatos de enlace
En este tema se muestra cómo utilizar la clase MetadataResolver para obtener dinámicamente los metadatos del enlace.
Para obtener dinámicamente los metadatos del enlace
Cree un objeto EndpointAddress con la dirección del extremo de metadatos.
EndpointAddress metaAddress = new EndpointAddress(new Uri("https://localhost:8080/SampleService/mex"));
Llame a Resolve, que pasa el tipo de servicio y la dirección del extremo de metadatos. Esto devuelve una colección de extremos que implementan el contrato especificado. Solo la información de enlace se importa desde los metadatos; la información del contrato no se importa. Se utiliza el contrato proporcionado en su lugar.
ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);
A continuación, puede recorrer en iteración la colección de extremos de servicio para extraer la información de enlace que necesite. El siguiente código recorre en iteración a través de los extremos, crea un objeto de cliente de servicio que pasa el enlace y la dirección asociada al extremo actual y, a continuación, llama a un método en el servicio.
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.")); } } }