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
EndpointAddress Utwórz obiekt z adresem punktu końcowego metadanych.
EndpointAddress metaAddress = new EndpointAddress(new Uri("http://localhost:8080/SampleService/mex"));
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);
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.")); } } }