Vorgehensweise: Verwenden von MetadataResolver, um Bindungsmetadaten dynamisch zu erhalten
Dieses Thema zeigt Ihnen, wie man die Klasse MetadataResolver einsetzt, um Bindungsmetadaten dynamisch zu erhalten.
So erhalten Sie dynamisch Bindungsmetadaten
Erstellen Sie ein EndpointAddress-Objekt mit der Adresse des Metadatenendpunkts.
EndpointAddress metaAddress = new EndpointAddress(new Uri("https://localhost:8080/SampleService/mex"));
Rufen Sie Resolve auf, der im Diensttyp und der Metadatenendpunktadresse übergibt. Es gibt eine Auflistung von Endpunkten zurück, die den angegebenen Vertrag implementieren. Die Metadaten implementieren nur Bindungsinformationen; Vertragsinformationen werden nicht importiert. Stattdessen wird der angegebene Vertrag verwendet.
ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient),metaAddress);
Sie können dann die Auflistung von Dienstendpunkten durchlaufen, um die Bindungsinformationen zu extrahieren, die Sie benötigen. Der folgende Code durchläuft die Endpunkte, erstellt ein Dienstclientobjekt, das in der Bindung und der Adresse, die mit dem aktuellen Endpunkt verbunden ist, übergeben wird, und ruft dann im Dienst eine Methode auf.
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.")); } } }