Vorgehensweise: Verwenden von MetadataResolver, um Bindungsmetadaten dynamisch zu erhaltenHow to: Use MetadataResolver to Obtain Binding Metadata Dynamically

Dieses Thema zeigt Ihnen, wie man die Klasse MetadataResolver einsetzt, um Bindungsmetadaten dynamisch zu erhalten.This topic shows you how to use the MetadataResolver class to dynamically obtain binding metadata.

So erhalten Sie dynamisch BindungsmetadatenTo dynamically obtain binding metadata

  1. Erstellen Sie ein EndpointAddress-Objekt mit der Adresse des Metadatenendpunkts.Create an EndpointAddress object with the address of the metadata endpoint.

    EndpointAddress metaAddress  
      = new EndpointAddress(new   Uri("http://localhost:8080/SampleService/mex"));  
    
  2. Rufen Sie Resolve(Type, EndpointAddress) auf, der im Diensttyp und der Metadatenendpunktadresse übergibt.Call Resolve(Type, EndpointAddress), which passes in the service type and the metadata endpoint address. Es gibt eine Auflistung von Endpunkten zurück, die den angegebenen Vertrag implementieren.This returns a collection of endpoints that implement the specified contract. Die Metadaten implementieren nur Bindungsinformationen; Vertragsinformationen werden nicht importiert.Only binding information is imported from the metadata; contract information is not imported. Stattdessen wird der angegebene Vertrag verwendet.The supplied contract is used instead.

    ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);  
    
  3. Sie können dann die Auflistung von Dienstendpunkten durchlaufen, um die Bindungsinformationen zu extrahieren, die Sie benötigen.You can then iterate through the collection of service endpoints to extract the binding information you need. Der folgende Code durchläuft die Endpunkte, erstellt ein Dienstclientobjekt, das in der Bindung und der Adresse übergeben wird, die mit dem aktuellen Endpunkt verbunden sind, und ruft dann im Dienst eine Methode auf.The following code iterates through the endpoints, creates a service client object that passes in the binding and address associated with the current endpoint, and then calls a method on the 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."));  
          }  
      }  
    }  
    

Siehe auchSee Also

MetadatenMetadata