MetadataResolver.Resolve Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera i rozpoznaje adres metadanych w ServiceEndpoint obiektach dla tej usługi.
Przeciążenia
| Nazwa | Opis |
|---|---|
| Resolve(IEnumerable<ContractDescription>, EndpointAddress) |
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu metadanych. |
| Resolve(Type, EndpointAddress) |
Pobiera i rozpoznaje adres metadanych w kolekcji ServiceEndpoint obiektów dla określonego kontraktu pod określonym adresem. |
| Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient) |
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu metadanych i MetadataExchangeClient. |
| Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode) |
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu i trybu transferu. |
| Resolve(Type, Uri, MetadataExchangeClientMode) |
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonego kontraktu przy użyciu określonego adresu i trybu transferu. |
| Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient) |
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu, trybu transferu i klienta transferu. |
Uwagi
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
W przypadku wszystkich metod synchronicznych i asynchronicznych Resolve pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.
Resolve(IEnumerable<ContractDescription>, EndpointAddress)
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu metadanych.
public:
static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, System::ServiceModel::EndpointAddress ^ address);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve(System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * System.ServiceModel.EndpointAddress -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As EndpointAddress) As ServiceEndpointCollection
Parametry
- contracts
- IEnumerable<ContractDescription>
Kontrakty, dla których mają zostać pobrane i rozwiązane metadane.
- address
- EndpointAddress
Adres metadanych.
Zwraca
Kolekcja ServiceEndpoint obiektów dla określonego kontraktu.
Wyjątki
Adres lub kolekcja kontraktów to null.
contracts jest pusty, co najmniej jeden element członkowski contracts ma wartość null lub contracts zawiera więcej niż jeden kontrakt o tej samej nazwie i przestrzeni nazw.
Uwagi
Ustawienia domyślne elementu System.ServiceModel.Description.MetadataExchangeClient służą do pobierania metadanych, a wartością domyślną System.ServiceModel.Description.MetadataExchangeClientMode jest MetadataExchangeClientMode.MetadataExchange.
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
Note
Pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.
Dotyczy
Resolve(Type, EndpointAddress)
Pobiera i rozpoznaje adres metadanych w kolekcji ServiceEndpoint obiektów dla określonego kontraktu pod określonym adresem.
public:
static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(Type ^ contract, System::ServiceModel::EndpointAddress ^ address);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve(Type contract, System.ServiceModel.EndpointAddress address);
static member Resolve : Type * System.ServiceModel.EndpointAddress -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contract As Type, address As EndpointAddress) As ServiceEndpointCollection
Parametry
- contract
- Type
Kontrakty, dla których mają zostać pobrane i rozwiązane metadane.
- address
- EndpointAddress
Adres metadanych.
Zwraca
Kolekcja ServiceEndpoint obiektów dla określonego kontraktu.
Wyjątki
Adres lub kontrakt to null.
Przykłady
Poniższy przykład kodu przedstawia użycie MetadataResolver klasy do zwracania metadanych jako kolekcji ServiceEndpoint obiektów, które są następnie używane do nawiązywania połączenia z wystąpieniem usługi.
// Get the endpoints for such a service
ServiceEndpointCollection endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient), metaAddress);
Console.WriteLine("Trying all available WS-Transfer metadata endpoints...");
foreach (ServiceEndpoint point in endpoints)
{
if (point != null)
{
// Create a new wcfClient using retrieved endpoints.
wcfClient = new SampleServiceClient(point.Binding, point.Address);
Console.WriteLine(
wcfClient.SampleMethod("Client used the "
+ point.Address.ToString()
+ " address.")
);
wcfClient.Close();
}
}
Uwagi
Resolve Użyj metody , aby określić kontrakt i adres metadanych do użycia podczas pobierania i rozpoznawania metadanych.
Ustawienia domyślne elementu System.ServiceModel.Description.MetadataExchangeClient służą do pobierania metadanych, a wartością domyślną System.ServiceModel.Description.MetadataExchangeClientMode jest MetadataExchangeClientMode.MetadataExchange.
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
Note
Pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.
Ta metoda wymaga określenia typu kontraktu. Możesz określić kontrakt, deklarując interfejs usługi w kodzie klienta lub przy użyciu klienta WCF wygenerowanego przez Svcutil.exe. Jeśli interfejs zmieni się (na przykład dodanie nowej operacji), musisz zaktualizować interfejs w kodzie klienta lub wygenerować nowego klienta programu WCF. Jeśli tego nie zrobisz, zostanie zgłoszony wyjątek. Na przykład masz usługę, która implementuje kontrakt usługi o nazwie ICalculator, który definiuje add(), Sub(), Mult() i Div(). Tworzysz aplikację kliencką i generujesz klienta WCF. Następnie dodaj metodę do metody ICalculator o nazwie Echo(). Jeśli następnie napiszesz aplikację, która wywołuje Resolve(Type, EndpointAddress) bez generowania nowego klienta WCF, otrzymasz następujący wyjątek.
Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator.
Dotyczy
Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu metadanych i MetadataExchangeClient.
public:
static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, System::ServiceModel::EndpointAddress ^ address, System::ServiceModel::Description::MetadataExchangeClient ^ client);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve(System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, System.ServiceModel.EndpointAddress address, System.ServiceModel.Description.MetadataExchangeClient client);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * System.ServiceModel.EndpointAddress * System.ServiceModel.Description.MetadataExchangeClient -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As EndpointAddress, client As MetadataExchangeClient) As ServiceEndpointCollection
Parametry
- contracts
- IEnumerable<ContractDescription>
Kontrakty, dla których mają zostać pobrane i rozwiązane metadane.
- address
- EndpointAddress
Adres metadanych.
- client
- MetadataExchangeClient
Element MetadataExchangeClient używany do pobierania metadanych.
Zwraca
Kolekcja ServiceEndpoint obiektów dla określonego kontraktu.
Wyjątki
Adres, kolekcja kontraktów lub klient to null.
contracts jest pusty, co najmniej jeden element członkowski contracts ma wartość null lub contracts zawiera więcej niż jeden kontrakt o tej samej nazwie i przestrzeni nazw.
Uwagi
Wartość domyślna System.ServiceModel.Description.MetadataExchangeClientMode to MetadataExchangeClientMode.MetadataExchange.
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
Note
Pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.
Dotyczy
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu i trybu transferu.
public:
static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve(System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * Uri * System.ServiceModel.Description.MetadataExchangeClientMode -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As Uri, mode As MetadataExchangeClientMode) As ServiceEndpointCollection
Parametry
- contracts
- IEnumerable<ContractDescription>
Kontrakty, dla których mają zostać pobrane i rozwiązane metadane.
- address
- Uri
Adres metadanych.
Tryb pobierania.
Zwraca
Kolekcja ServiceEndpoint obiektów dla określonego kontraktu.
Wyjątki
Adres lub kolekcja kontraktów to null.
contracts jest pusty, co najmniej jeden element członkowski contracts ma wartość null lub contracts zawiera więcej niż jeden kontrakt o tej samej nazwie i przestrzeni nazw.
Uwagi
Ustawienia domyślne elementu System.ServiceModel.Description.MetadataExchangeClient służą do pobierania metadanych.
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
Note
Pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.
Dotyczy
Resolve(Type, Uri, MetadataExchangeClientMode)
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonego kontraktu przy użyciu określonego adresu i trybu transferu.
public:
static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(Type ^ contract, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve(Type contract, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode);
static member Resolve : Type * Uri * System.ServiceModel.Description.MetadataExchangeClientMode -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contract As Type, address As Uri, mode As MetadataExchangeClientMode) As ServiceEndpointCollection
Parametry
- contract
- Type
Kontrakt, dla którego należy pobrać i rozwiązać metadane.
- address
- Uri
Adres metadanych.
Tryb pobierania.
Zwraca
Kolekcja ServiceEndpoint obiektów dla określonego kontraktu.
Wyjątki
Adres lub kontrakt to null.
Przykłady
Poniższy przykład kodu przedstawia użycie elementu MetadataResolver do pobierania i zwracania metadanych jako kolekcji ServiceEndpoint obiektów przy użyciu żądania HTTP GET zamiast transferu WS..
// Get the endpoints for such a service using Http/Get request
endpoints = MetadataResolver.Resolve(typeof(SampleServiceClient), httpGetMetaAddress.Uri, MetadataExchangeClientMode.HttpGet);
Client.WriteParameters(endpoints);
ISampleService serviceChannel;
Console.WriteLine(
"\r\nTrying all endpoints from HTTP/Get and with direct service channels...");
foreach (ServiceEndpoint point in endpoints)
{
if (point != null)
{
ChannelFactory<ISampleService> factory = new ChannelFactory<ISampleService>(point.Binding);
factory.Endpoint.Address = point.Address;
serviceChannel = factory.CreateChannel();
Console.WriteLine("Client used the " + point.Address.ToString() + " address.");
Console.WriteLine(
serviceChannel.SampleMethod(
"Client used the " + point.Address.ToString() + " address."
)
);
factory.Close();
}
}
Uwagi
Resolve Użyj metody , aby określić kontrakt i adres oraz mechanizm pobierania do użycia.
Ustawienia domyślne elementu System.ServiceModel.Description.MetadataExchangeClient służą do pobierania metadanych.
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
Note
Pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.
Dotyczy
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)
Rozpoznaje adres metadanych w ServiceEndpoint obiektach dla określonych kontraktów przy użyciu określonego adresu, trybu transferu i klienta transferu.
public:
static System::ServiceModel::Description::ServiceEndpointCollection ^ Resolve(System::Collections::Generic::IEnumerable<System::ServiceModel::Description::ContractDescription ^> ^ contracts, Uri ^ address, System::ServiceModel::Description::MetadataExchangeClientMode mode, System::ServiceModel::Description::MetadataExchangeClient ^ client);
public static System.ServiceModel.Description.ServiceEndpointCollection Resolve(System.Collections.Generic.IEnumerable<System.ServiceModel.Description.ContractDescription> contracts, Uri address, System.ServiceModel.Description.MetadataExchangeClientMode mode, System.ServiceModel.Description.MetadataExchangeClient client);
static member Resolve : seq<System.ServiceModel.Description.ContractDescription> * Uri * System.ServiceModel.Description.MetadataExchangeClientMode * System.ServiceModel.Description.MetadataExchangeClient -> System.ServiceModel.Description.ServiceEndpointCollection
Public Shared Function Resolve (contracts As IEnumerable(Of ContractDescription), address As Uri, mode As MetadataExchangeClientMode, client As MetadataExchangeClient) As ServiceEndpointCollection
Parametry
- contracts
- IEnumerable<ContractDescription>
Kontrakty, dla których mają zostać pobrane i rozwiązane metadane.
- address
- Uri
Adres metadanych.
Tryb pobierania.
- client
- MetadataExchangeClient
Element MetadataExchangeClient używany do pobierania metadanych.
Zwraca
Kolekcja ServiceEndpoint obiektów dla określonego kontraktu.
Wyjątki
Adres, kolekcja kontraktów lub klient to null.
contracts jest pusty, co najmniej jeden element członkowski contracts ma wartość null lub contracts zawiera więcej niż jeden kontrakt o tej samej nazwie i przestrzeni nazw.
Uwagi
Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj ich System.ServiceModel.Description.MetadataExchangeClient bezpośrednio.
Note
Pusta kolekcja jest zwracana, jeśli nie zaimportowano żadnych punktów końcowych lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.