Sdílet prostřednictvím


MetadataResolver.Resolve Metoda

Definice

Stáhne a přeloží adresu metadat do ServiceEndpoint objektů pro danou službu.

Přetížení

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Přeloží adresu metadat do ServiceEndpoint objektů pro zadané kontrakty pomocí zadané adresy metadat.

Resolve(Type, EndpointAddress)

Stáhne a přeloží adresu metadat do kolekce ServiceEndpoint objektů pro zadaný kontrakt na zadanou adresu.

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Přeloží adresu metadat do ServiceEndpoint objektů pro zadané kontrakty pomocí zadané adresy metadat a MetadataExchangeClient.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Vyřeší adresu metadat do ServiceEndpoint objektů pro zadané kontrakty pomocí zadané adresy a režimu přenosu.

Resolve(Type, Uri, MetadataExchangeClientMode)

Vyřeší adresu metadat do ServiceEndpoint objektů zadané smlouvy pomocí zadané adresy a režimu přenosu.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

Vyřeší adresu metadat do ServiceEndpoint objektů určených kontraktů pomocí zadané adresy, režimu přenosu a převodu klienta.

Poznámky

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Pro všechny synchronní a asynchronní Resolve metody se vrátí prázdná kolekce, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Přeloží adresu metadat do ServiceEndpoint objektů pro zadané kontrakty pomocí zadané adresy metadat.

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, pro které se mají stáhnout a vyřešit metadata.

address
EndpointAddress

Adresa metadat.

Návraty

ServiceEndpointCollection

Kolekce ServiceEndpoint objektů pro zadaný kontrakt.

Výjimky

Adresa nebo kolekce kontraktů je null.

contracts je prázdný, minimálně jeden člen contracts má hodnotu null nebo contracts obsahuje více kontraktů se stejným názvem a oborem názvů.

Poznámky

Výchozí nastavení se System.ServiceModel.Description.MetadataExchangeClient používá k načtení metadat a výchozí System.ServiceModel.Description.MetadataExchangeClientMode nastavení je MetadataExchangeClientMode.MetadataExchange.

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Poznámka

Prázdná kolekce se vrátí, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Platí pro

Resolve(Type, EndpointAddress)

Stáhne a přeloží adresu metadat do kolekce ServiceEndpoint objektů pro zadaný kontrakt na zadanou adresu.

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, pro které se mají stáhnout a vyřešit metadata.

address
EndpointAddress

Adresa metadat.

Návraty

ServiceEndpointCollection

Kolekce ServiceEndpoint objektů pro zadaný kontrakt.

Výjimky

Adresa nebo smlouva je null.

Příklady

Následující příklad kódu ukazuje použití MetadataResolver třídy k vrácení metadat jako kolekce ServiceEndpoint objektů, které se pak používají pro připojení k instanci služby.

// 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();
    }
}

Poznámky

Použijte metodu Resolve k určení kontraktu a adresy metadat, která se má použít při stahování a překladu metadat.

Výchozí nastavení se System.ServiceModel.Description.MetadataExchangeClient používá k načtení metadat a výchozí System.ServiceModel.Description.MetadataExchangeClientMode nastavení je MetadataExchangeClientMode.MetadataExchange.

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Poznámka

Prázdná kolekce se vrátí, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Tato metoda vyžaduje, abyste zadali typ kontraktu. Kontrakt můžete zadat deklarováním rozhraní služby v kódu klienta nebo pomocí klienta WCF vygenerovaného Svcutil.exe. Pokud se rozhraní změní (například přidání nové operace), musíte rozhraní aktualizovat v klientském kódu nebo vygenerovat nového klienta WCF. Pokud ne, vyvolá se výjimka. Máte například službu, která implementuje kontrakt služby s názvem ICalculator, který definuje Add(), Sub(), Mult() a Div(). Vytvoříte klientskou aplikaci a vygenerujete klienta WCF. Pak přidáte metodu do ICalculatoru s názvem Echo(). Pokud pak napíšete aplikaci, která volá Resolve(Type, EndpointAddress) bez generování nového klienta WCF, získáte následující výjimku.

Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator.

Platí pro

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Přeloží adresu metadat do ServiceEndpoint objektů pro zadané kontrakty pomocí zadané adresy metadat a 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, pro které se mají stáhnout a vyřešit metadata.

address
EndpointAddress

Adresa metadat.

client
MetadataExchangeClient

Používá MetadataExchangeClient se k načtení metadat.

Návraty

ServiceEndpointCollection

Kolekce ServiceEndpoint objektů pro zadaný kontrakt.

Výjimky

Adresa, kolekce kontraktů nebo klient je null.

contracts je prázdný, minimálně jeden člen contracts má hodnotu null nebo contracts obsahuje více kontraktů se stejným názvem a oborem názvů.

Poznámky

Výchozí System.ServiceModel.Description.MetadataExchangeClientMode hodnota je MetadataExchangeClientMode.MetadataExchange.

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Poznámka

Prázdná kolekce se vrátí, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Platí pro

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Vyřeší adresu metadat do ServiceEndpoint objektů pro zadané kontrakty pomocí zadané adresy a režimu přenosu.

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, pro které se mají stáhnout a vyřešit metadata.

address
Uri

Adresa metadat.

mode
MetadataExchangeClientMode

Režim načítání.

Návraty

ServiceEndpointCollection

Kolekce ServiceEndpoint objektů pro zadaný kontrakt.

Výjimky

Adresa nebo kolekce kontraktů je null.

contracts je prázdný, minimálně jeden člen contracts má hodnotu null nebo contracts obsahuje více kontraktů se stejným názvem a oborem názvů.

Poznámky

Výchozí nastavení se System.ServiceModel.Description.MetadataExchangeClient používá k načtení metadat.

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Poznámka

Prázdná kolekce se vrátí, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Platí pro

Resolve(Type, Uri, MetadataExchangeClientMode)

Vyřeší adresu metadat do ServiceEndpoint objektů zadané smlouvy pomocí zadané adresy a režimu přenosu.

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, pro který se mají stáhnout a vyřešit metadata.

address
Uri

Adresa metadat.

mode
MetadataExchangeClientMode

Režim načítání.

Návraty

ServiceEndpointCollection

Kolekce ServiceEndpoint objektů pro zadaný kontrakt.

Výjimky

Adresa nebo smlouva je null.

Příklady

Následující příklad kódu ukazuje použití MetadataResolver ke stažení a vrácení metadat jako kolekce ServiceEndpoint objektů pomocí požadavku HTTP GET místo 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();
    }
}

Poznámky

Použijte metodu Resolve k určení kontraktu a adresy a mechanismu stahování, který se má použít.

Výchozí nastavení se System.ServiceModel.Description.MetadataExchangeClient používá k načtení metadat.

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Poznámka

Prázdná kolekce se vrátí, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Platí pro

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

Vyřeší adresu metadat do ServiceEndpoint objektů určených kontraktů pomocí zadané adresy, režimu přenosu a převodu klienta.

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, pro které se mají stáhnout a vyřešit metadata.

address
Uri

Adresa metadat.

mode
MetadataExchangeClientMode

Režim načítání.

client
MetadataExchangeClient

Používá MetadataExchangeClient se k načtení metadat.

Návraty

ServiceEndpointCollection

Kolekce ServiceEndpoint objektů pro zadaný kontrakt.

Výjimky

Adresa, kolekce kontraktů nebo klient je null.

contracts je prázdný, minimálně jeden člen contracts má hodnotu null nebo contracts obsahuje více kontraktů se stejným názvem a oborem názvů.

Poznámky

Pokud chcete stáhnout metadata, ale nerozložit informace do ServiceEndpoint objektů, použijte System.ServiceModel.Description.MetadataExchangeClient přímo.

Poznámka

Prázdná kolekce se vrátí, pokud nebyly importovány žádné koncové body nebo pokud žádné koncové body neodpovídají kontraktu. Pokud se vrátí prázdná kolekce, zapíše se trasování upozornění.

Platí pro