Instrukcje: Dynamiczne uzyskiwanie metadanych powiązania przy użyciu klasy MetadataResolver

W tym temacie pokazano, jak używać klasy do dynamicznego MetadataResolver uzyskiwania metadanych powiązania.

Aby dynamicznie uzyskiwać metadane powiązania

  1. EndpointAddress Utwórz obiekt z adresem punktu końcowego metadanych.

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Wywołaj metodę Resolve(Type, EndpointAddress), która przekazuje typ usługi i adres punktu końcowego metadanych. Spowoduje to zwrócenie kolekcji punktów końcowych, które implementują określony kontrakt. Tylko informacje o powiązaniach są importowane z metadanych; informacje o umowie nie są importowane. Podany kontrakt jest używany zamiast tego.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Następnie można iterować po kolekcji punktów końcowych usługi w celu wyodrębnienia potrzebnych informacji o powiązaniu. Poniższy kod wykonuje iterację za pośrednictwem punktów końcowych, tworzy obiekt klienta usługi, który przekazuje powiązanie i adres skojarzony z bieżącym punktem końcowym, a następnie wywołuje metodę w usłudze.

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

Zobacz też