MetadataResolver.Resolve Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Baixa e resolve um endereço de metadados nos objetos ServiceEndpoint para esse serviço.
Sobrecargas
Resolve(IEnumerable<ContractDescription>, EndpointAddress) |
Resolve um endereço de metadados nos objetos ServiceEndpoint para os contratos especificados usando o endereço de metadados especificado. |
Resolve(Type, EndpointAddress) |
Baixa e resolve um endereço de metadados em uma coleção de objetos ServiceEndpoint para um contrato especificado em um endereço especificado. |
Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient) |
Resolve um endereço de metadados nos objetos ServiceEndpoint 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 objetos ServiceEndpoint para os contratos especificados usando o endereço e o modo de transferência especificado. |
Resolve(Type, Uri, MetadataExchangeClientMode) |
Resolve um endereço de metadados nos objetos ServiceEndpoint para o contrato especificado usando o endereço e o modo de transferência especificado. |
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient) |
Resolve um endereço de metadados nos objetos ServiceEndpoint para os contratos especificados usando o endereço, o modo de transferência e o cliente de transferência especificados. |
Comentários
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Para todos os métodos síncronos e assíncronos Resolve
, uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.
Resolve(IEnumerable<ContractDescription>, EndpointAddress)
Resolve um endereço de metadados nos objetos ServiceEndpoint para os 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 os quais metadados serão baixados e resolvidos.
- address
- EndpointAddress
O endereço dos metadados.
Retornos
Uma coleção de objetos ServiceEndpoint para o contrato especificado.
Exceções
A coleção de contratos ou endereço é null
.
contracts
está vazio, pelo menos um membro de contracts
é nulo ou contracts
contém mais de um contrato com o mesmo nome e namespace.
Comentários
As configurações padrão no System.ServiceModel.Description.MetadataExchangeClient são usadas para recuperar os metadados e o padrão System.ServiceModel.Description.MetadataExchangeClientMode é MetadataExchangeClientMode.MetadataExchange.
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Observação
Uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.
Aplica-se a
Resolve(Type, EndpointAddress)
Baixa e resolve um endereço de metadados em uma coleção de objetos ServiceEndpoint para um contrato especificado em um 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 os quais metadados serão baixados e resolvidos.
- address
- EndpointAddress
O endereço dos metadados.
Retornos
Uma coleção de objetos ServiceEndpoint para o contrato especificado.
Exceções
O endereço ou o contrato é null
.
Exemplos
O exemplo de código a seguir mostra o uso da MetadataResolver classe para retornar metadados como uma coleção de ServiceEndpoint objetos que são usados para se conectar 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();
}
}
Comentários
Use o Resolve método para especificar o contrato e o endereço de metadados a serem usados ao baixar e resolver metadados.
As configurações padrão no System.ServiceModel.Description.MetadataExchangeClient são usadas para recuperar os metadados e o padrão System.ServiceModel.Description.MetadataExchangeClientMode é MetadataExchangeClientMode.MetadataExchange.
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Observação
Uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.
Esse método exige que você especifique um tipo de contrato. Você 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 for alterada (adicionando uma nova operação, por exemplo), você deverá atualizar a interface no código do cliente ou gerar um novo cliente WCF. Se você não fizer isso, uma exceção será gerada. Por exemplo, você tem um serviço que implementa um contrato de serviço chamado ICalculator que define Add(), Sub(), Mult() e Div(). Crie um aplicativo cliente e gere um cliente WCF. Em seguida, adicione um método ao ICalculator chamado Echo(). Se você escrever um aplicativo que chama Resolve(Type, EndpointAddress) sem gerar um novo cliente WCF, você receberá 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 objetos ServiceEndpoint 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 os quais metadados serão baixados e resolvidos.
- address
- EndpointAddress
O endereço dos metadados.
- client
- MetadataExchangeClient
O MetadataExchangeClient usado para recuperar os metadados.
Retornos
Uma coleção de objetos ServiceEndpoint para o contrato especificado.
Exceções
O endereço, a coleção de contratos ou o cliente é null
.
contracts
está vazio, pelo menos um membro de contracts
é nulo ou contracts
contém mais de um contrato com o mesmo nome e namespace.
Comentários
O valor padrão System.ServiceModel.Description.MetadataExchangeClientMode é MetadataExchangeClientMode.MetadataExchange.
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Observação
Uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.
Aplica-se a
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)
Resolve um endereço de metadados nos objetos ServiceEndpoint para os contratos especificados usando o endereço e o modo de transferência especificado.
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 os quais metadados serão baixados e resolvidos.
- address
- Uri
O endereço dos metadados.
O modo de recuperação.
Retornos
Uma coleção de objetos ServiceEndpoint para o contrato especificado.
Exceções
A coleção de contratos ou endereço é null
.
contracts
está vazio, pelo menos um membro de contracts
é nulo ou contracts
contém mais de um contrato com o mesmo nome e namespace.
Comentários
As configurações padrão no System.ServiceModel.Description.MetadataExchangeClient são usadas para recuperar os metadados.
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Observação
Uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.
Aplica-se a
Resolve(Type, Uri, MetadataExchangeClientMode)
Resolve um endereço de metadados nos objetos ServiceEndpoint para o contrato especificado usando o endereço e o modo de transferência especificado.
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 o qual metadados serão baixados e resolvidos.
- address
- Uri
O endereço dos metadados.
O modo de recuperação.
Retornos
Uma coleção de objetos ServiceEndpoint para o contrato especificado.
Exceções
O endereço ou o contrato é null
.
Exemplos
O exemplo de código a seguir mostra o uso dos MetadataResolver metadados para baixar e retornar como uma coleção de ServiceEndpoint objetos usando uma solicitação 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();
}
}
Comentários
Use o Resolve método para especificar um contrato e um endereço e o mecanismo de download a ser usado.
As configurações padrão no System.ServiceModel.Description.MetadataExchangeClient são usadas para recuperar os metadados.
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Observação
Uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.
Aplica-se a
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)
Resolve um endereço de metadados nos objetos ServiceEndpoint para os contratos especificados usando o endereço, o modo de transferência e o 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 os quais metadados serão baixados e resolvidos.
- address
- Uri
O endereço dos metadados.
O modo de recuperação.
- client
- MetadataExchangeClient
O MetadataExchangeClient usado para recuperar os metadados.
Retornos
Uma coleção de objetos ServiceEndpoint para o contrato especificado.
Exceções
O endereço, a coleção de contratos ou o cliente é null
.
contracts
está vazio, pelo menos um membro de contracts
é nulo ou contracts
contém mais de um contrato com o mesmo nome e namespace.
Comentários
Para baixar metadados, mas não resolver as informações em ServiceEndpoint objetos, use-os System.ServiceModel.Description.MetadataExchangeClient diretamente.
Observação
Uma coleção vazia será retornada se nenhum ponto de extremidade tiver sido importado ou se nenhum ponto de extremidade corresponder ao contrato. Se uma coleção vazia for retornada, um rastreamento de aviso será gravado.