MetadataResolver.Resolve Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Descarrega e resolve um endereço de metadados nos ServiceEndpoint objetos desse serviço.
Sobrecargas
| Name | Description |
|---|---|
| Resolve(IEnumerable<ContractDescription>, EndpointAddress) |
Resolve um endereço de metadados nos ServiceEndpoint objetos dos contratos especificados usando o endereço de metadados especificado. |
| Resolve(Type, EndpointAddress) |
Descarrega e resolve um endereço de metadados numa coleção de ServiceEndpoint objetos para um contrato especificado num endereço especificado. |
| Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient) |
Resolve um endereço de metadados nos ServiceEndpoint objetos para os contratos especificados usando o endereço de metadados especificado e MetadataExchangeClient. |
| Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode) |
Resolve um endereço de metadados nos ServiceEndpoint objetos dos contratos especificados usando o endereço e modo de transferência especificados. |
| Resolve(Type, Uri, MetadataExchangeClientMode) |
Resolve um endereço de metadados nos ServiceEndpoint objetos para o contrato especificado usando o endereço e o modo de transferência especificados. |
| Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient) |
Resolve um endereço de metadados nos ServiceEndpoint objetos dos contratos especificados usando o endereço, modo de transferência e cliente de transferência especificados. |
Observações
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Para todos os métodos síncronos e assíncronos Resolve , uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.
Resolve(IEnumerable<ContractDescription>, EndpointAddress)
Resolve um endereço de metadados nos ServiceEndpoint objetos dos contratos especificados usando o endereço de metadados especificado.
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
Parâmetros
- contracts
- IEnumerable<ContractDescription>
Os contratos para descarregar e resolver metadados.
- address
- EndpointAddress
O endereço dos metadados.
Devoluções
Uma coleção de ServiceEndpoint objetos para o contrato especificado.
Exceções
A morada ou a coleção de contratos é null.
contracts é vazio, pelo menos um membro de contracts é nulo, ou contracts contém mais do que um contrato com o mesmo nome e espaço de nomes.
Observações
As definições padrão em são System.ServiceModel.Description.MetadataExchangeClient usadas para recuperar os metadados e o padrão System.ServiceModel.Description.MetadataExchangeClientMode é MetadataExchangeClientMode.MetadataExchange.
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Note
Uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.
Aplica-se a
Resolve(Type, EndpointAddress)
Descarrega e resolve um endereço de metadados numa coleção de ServiceEndpoint objetos para um contrato especificado num endereço especificado.
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
Parâmetros
- contract
- Type
Os contratos para descarregar e resolver metadados.
- address
- EndpointAddress
O endereço dos metadados.
Devoluções
Uma coleção de ServiceEndpoint objetos para o contrato especificado.
Exceções
A morada ou o contrato é null.
Exemplos
O exemplo de código seguinte mostra a utilização da MetadataResolver classe para devolver metadados como uma coleção de ServiceEndpoint objetos que são depois usados para se ligar a uma instância de serviço.
// 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();
}
}
Observações
Use o Resolve método para especificar o contrato e o endereço de metadados a usar ao descarregar e resolver metadados.
As definições padrão em são System.ServiceModel.Description.MetadataExchangeClient usadas para recuperar os metadados e o padrão System.ServiceModel.Description.MetadataExchangeClientMode é MetadataExchangeClientMode.MetadataExchange.
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Note
Uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.
Este método exige que especifique um tipo de contrato. Pode especificar o contrato declarando a interface de serviço no código do cliente ou usando um cliente WCF gerado por Svcutil.exe. Se a interface mudar (adicionar uma nova operação, por exemplo), deve atualizar a interface no código do cliente ou gerar um novo cliente WCF. Se não o fizer, é lançada uma exceção. Por exemplo, tens um serviço que implementa um contrato de serviço chamado ICalculator que define Add(), Sub(), Mult() e Div(). Cria-se uma aplicação cliente e gera-se um cliente WCF. Depois adiciona-se um método ao ICalculator chamado Echo(). Se depois escrever uma aplicação que chama Resolve(Type, EndpointAddress) sem gerar um novo cliente WCF, obtém a seguinte exceção.
Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator.
Aplica-se a
Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)
Resolve um endereço de metadados nos ServiceEndpoint objetos para os contratos especificados usando o endereço de metadados especificado e 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
Parâmetros
- contracts
- IEnumerable<ContractDescription>
Os contratos para descarregar e resolver metadados.
- address
- EndpointAddress
O endereço dos metadados.
- client
- MetadataExchangeClient
Eles MetadataExchangeClient são usados para recuperar os metadados.
Devoluções
Uma coleção de ServiceEndpoint objetos para o contrato especificado.
Exceções
A morada, cobrança de contratos ou cliente é null.
contracts é vazio, pelo menos um membro de contracts é nulo, ou contracts contém mais do que um contrato com o mesmo nome e espaço de nomes.
Observações
O padrão System.ServiceModel.Description.MetadataExchangeClientMode é MetadataExchangeClientMode.MetadataExchange.
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Note
Uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.
Aplica-se a
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)
Resolve um endereço de metadados nos ServiceEndpoint objetos dos contratos especificados usando o endereço e modo de transferência especificados.
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
Parâmetros
- contracts
- IEnumerable<ContractDescription>
Os contratos para descarregar e resolver metadados.
- address
- Uri
O endereço dos metadados.
O modo de recuperação.
Devoluções
Uma coleção de ServiceEndpoint objetos para o contrato especificado.
Exceções
A morada ou a coleção de contratos é null.
contracts é vazio, pelo menos um membro de contracts é nulo, ou contracts contém mais do que um contrato com o mesmo nome e espaço de nomes.
Observações
As definições padrão são System.ServiceModel.Description.MetadataExchangeClient usadas para recuperar os metadados.
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Note
Uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.
Aplica-se a
Resolve(Type, Uri, MetadataExchangeClientMode)
Resolve um endereço de metadados nos ServiceEndpoint objetos para o contrato especificado usando o endereço e o modo de transferência especificados.
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
Parâmetros
- contract
- Type
O contrato para descarregar e resolver metadados.
- address
- Uri
O endereço dos metadados.
O modo de recuperação.
Devoluções
Uma coleção de ServiceEndpoint objetos para o contrato especificado.
Exceções
A morada ou contrato é null.
Exemplos
O exemplo de código seguinte mostra o uso do MetadataResolver para descarregar e devolver metadados como uma coleção de ServiceEndpoint objetos usando um pedido HTTP GET em vez de 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();
}
}
Observações
Use o Resolve método para especificar um contrato, o endereço e o mecanismo de download a utilizar.
As definições padrão são System.ServiceModel.Description.MetadataExchangeClient usadas para recuperar os metadados.
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Note
Uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.
Aplica-se a
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)
Resolve um endereço de metadados nos ServiceEndpoint objetos dos contratos especificados usando o endereço, modo de transferência e cliente de transferência especificados.
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
Parâmetros
- contracts
- IEnumerable<ContractDescription>
Os contratos para descarregar e resolver metadados.
- address
- Uri
O endereço dos metadados.
O modo de recuperação.
- client
- MetadataExchangeClient
Eles MetadataExchangeClient são usados para recuperar os metadados.
Devoluções
Uma coleção de ServiceEndpoint objetos para o contrato especificado.
Exceções
A morada, cobrança de contratos ou cliente é null.
contracts é vazio, pelo menos um membro de contracts é nulo, ou contracts contém mais do que um contrato com o mesmo nome e espaço de nomes.
Observações
Para descarregar metadados mas não resolver a informação em ServiceEndpoint objetos, use o System.ServiceModel.Description.MetadataExchangeClient direto.
Note
Uma coleção vazia é devolvida se nenhum endpoint for importado ou se nenhum endpoint corresponder ao contrato. Se uma coleção vazia for devolvida, é escrito um traço de aviso.