Dela via


Anvisningar: Använda MetadataResolver för att hämta bindningsmetadata dynamiskt

Det här avsnittet visar hur du använder MetadataResolver klassen för att dynamiskt hämta bindningsmetadata.

Så här hämtar du bindningsmetadata dynamiskt

  1. Skapa ett EndpointAddress objekt med adressen för metadataslutpunkten.

    EndpointAddress metaAddress  
      = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Anropa Resolve(Type, EndpointAddress), som skickar in tjänsttypen och metadataslutpunktsadressen. Detta returnerar en samling slutpunkter som implementerar det angivna kontraktet. Endast bindningsinformation importeras från metadata. kontraktsinformation importeras inte. Det angivna kontraktet används i stället.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Du kan sedan iterera genom samlingen av tjänstslutpunkter för att extrahera den bindningsinformation du behöver. Följande kod itererar genom slutpunkterna, skapar ett tjänstklientobjekt som skickar bindningen och adressen som är associerad med den aktuella slutpunkten och anropar sedan en metod för tjänsten.

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

Se även