MetadataResolver.Resolve Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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
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
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.
Režim načítání.
Návraty
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.
Režim načítání.
Návraty
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.
Režim načítání.
- client
- MetadataExchangeClient
Používá MetadataExchangeClient se k načtení metadat.
Návraty
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í.