Delen via


Procedure: MetadataResolver gebruiken om bindingsmetagegevens dynamisch te verkrijgen

In dit onderwerp wordt beschreven hoe u de MetadataResolver klasse gebruikt om bindingsmetagegevens dynamisch te verkrijgen.

Bindingsmetagegevens dynamisch verkrijgen

  1. Maak een EndpointAddress object met het adres van het eindpunt voor metagegevens.

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Aanroep Resolve(Type, EndpointAddress), die het servicetype en het adres van het metagegevenseindpunt doorgeeft. Hiermee wordt een verzameling eindpunten geretourneerd die het opgegeven contract implementeren. Alleen bindingsinformatie wordt geïmporteerd uit de metagegevens; contractgegevens worden niet geïmporteerd. Het geleverde contract wordt in plaats daarvan gebruikt.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Vervolgens kunt u de verzameling service-eindpunten doorlopen om de bindingsgegevens te extraheren die u nodig hebt. De volgende code doorloopt de eindpunten, maakt een serviceclientobject dat de binding en het adres doorgeeft dat is gekoppeld aan het huidige eindpunt en roept vervolgens een methode aan voor de service.

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

Zie ook