Udostępnij za pośrednictwem


MetadataResolver.Resolve Metoda

Definicja

Pobiera i rozpoznaje adres metadanych w ServiceEndpoint obiektach dla tej usługi.

Przeciążenia

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Rozpoznaje adres metadanych w ServiceEndpoint obiektach 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 określonych kontraktów przy użyciu określonego adresu metadanych i MetadataExchangeClient.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Rozpoznaje adres metadanych w ServiceEndpoint obiektach 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 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 System.ServiceModel.Description.MetadataExchangeClient ich 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 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 problemy z metadanymi.

address
EndpointAddress

Adres metadanych.

Zwraca

ServiceEndpointCollection

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

Domyślne ustawienia w obiekcie System.ServiceModel.Description.MetadataExchangeClient są używane 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 System.ServiceModel.Description.MetadataExchangeClient ich bezpośrednio.

Uwaga

Pusta kolekcja jest zwracana, jeśli żadne punkty końcowe nie zostały zaimportowane 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 problemy z metadanymi.

address
EndpointAddress

Adres metadanych.

Zwraca

ServiceEndpointCollection

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.

Domyślne ustawienia w obiekcie System.ServiceModel.Description.MetadataExchangeClient są używane 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 System.ServiceModel.Description.MetadataExchangeClient ich bezpośrednio.

Uwaga

Pusta kolekcja jest zwracana, jeśli żadne punkty końcowe nie zostały zaimportowane 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. Kontrakt można określić, 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 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 należy dodać metodę do metody ICalculator o nazwie Echo(). Jeśli następnie napiszesz aplikację, która wywołuje bez Resolve(Type, EndpointAddress) 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 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 problemy z metadanymi.

address
EndpointAddress

Adres metadanych.

client
MetadataExchangeClient

Używane MetadataExchangeClient do pobierania metadanych.

Zwraca

ServiceEndpointCollection

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 System.ServiceModel.Description.MetadataExchangeClient ich bezpośrednio.

Uwaga

Pusta kolekcja jest zwracana, jeśli żadne punkty końcowe nie zostały zaimportowane 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 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 problemy z metadanymi.

address
Uri

Adres metadanych.

mode
MetadataExchangeClientMode

Tryb pobierania.

Zwraca

ServiceEndpointCollection

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 w obiekcie System.ServiceModel.Description.MetadataExchangeClient służą do pobierania metadanych.

Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj System.ServiceModel.Description.MetadataExchangeClient ich bezpośrednio.

Uwaga

Pusta kolekcja jest zwracana, jeśli żadne punkty końcowe nie zostały zaimportowane 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 rozpoznać metadane.

address
Uri

Adres metadanych.

mode
MetadataExchangeClientMode

Tryb pobierania.

Zwraca

ServiceEndpointCollection

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 funkcji do pobierania i zwracania metadanych jako kolekcji ServiceEndpoint obiektów przy użyciu żądania HTTP GET, a nie WS-Transfer.

// 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 w obiekcie System.ServiceModel.Description.MetadataExchangeClient służą do pobierania metadanych.

Aby pobrać metadane, ale nie rozpoznać informacji w ServiceEndpoint obiektach, użyj System.ServiceModel.Description.MetadataExchangeClient ich bezpośrednio.

Uwaga

Pusta kolekcja jest zwracana, jeśli żadne punkty końcowe nie zostały zaimportowane 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 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 problemy z metadanymi.

address
Uri

Adres metadanych.

mode
MetadataExchangeClientMode

Tryb pobierania.

client
MetadataExchangeClient

Używane MetadataExchangeClient do pobierania metadanych.

Zwraca

ServiceEndpointCollection

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 System.ServiceModel.Description.MetadataExchangeClient ich bezpośrednio.

Uwaga

Pusta kolekcja jest zwracana, jeśli żadne punkty końcowe nie zostały zaimportowane lub jeśli żadne punkty końcowe nie pasują do kontraktu. Jeśli zostanie zwrócona pusta kolekcja, zostanie zapisany ślad ostrzegawczy.

Dotyczy