Sdílet prostřednictvím


Postupy: Použití třídy MetadataResolver k dynamickému získání metadat vazby

V tomto tématu se dozvíte, jak pomocí MetadataResolver třídy dynamicky získat metadata vazby.

Dynamické získání metadat vazby

  1. Vytvořte EndpointAddress objekt s adresou koncového bodu metadat.

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Volání Resolve(Type, EndpointAddress), které předává typ služby a adresu koncového bodu metadat. Vrátí kolekci koncových bodů, které implementují zadaný kontrakt. Z metadat se importují pouze informace o vazbě; informace o kontraktu se nenaimportují. Místo toho se použije zadaný kontrakt.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Pak můžete iterovat kolekcí koncových bodů služby a extrahovat potřebné informace o vazbě. Následující kód prochází koncovými body, vytvoří objekt klienta služby, který předává vazbu a adresu přidruženou k aktuálnímu koncovému bodu, a potom volá metodu služby.

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

Viz také