MetadataResolver.Resolve Método

Definição

Baixa e resolve um endereço de metadados nos ServiceEndpoint objetos desse serviço.

Sobrecargas

Nome 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)

Baixa e resolve um endereço de metadados em uma coleção de ServiceEndpoint objetos para um contrato especificado em um 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 para os contratos especificados usando o endereço e o modo de transferência especificados.

Resolve(Type, Uri, MetadataExchangeClientMode)

Resolve um endereço de metadados nos ServiceEndpoint objetos do 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 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

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 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 os quais baixar e resolver metadados.

address
EndpointAddress

O endereço de metadados.

Retornos

Uma coleção de ServiceEndpoint objetos para o contrato especificado.

Exceções

A coleção de endereços ou contratos é null.

contracts está vazio, pelo menos um membro 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

Note

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 ServiceEndpoint objetos 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 baixar e resolver metadados.

address
EndpointAddress

O endereço de metadados.

Retornos

Uma coleção de ServiceEndpoint objetos 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

Note

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 requer 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 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 os quais baixar e resolver metadados.

address
EndpointAddress

O endereço de metadados.

client
MetadataExchangeClient

O MetadataExchangeClient usado para recuperar os metadados.

Retornos

Uma coleção de ServiceEndpoint objetos 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 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

Note

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 ServiceEndpoint objetos para os contratos especificados usando o endereço e o 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 os quais baixar e resolver metadados.

address
Uri

O endereço de metadados.

mode
MetadataExchangeClientMode

O modo de recuperação.

Retornos

Uma coleção de ServiceEndpoint objetos para o contrato especificado.

Exceções

A coleção de endereços ou contratos é null.

contracts está vazio, pelo menos um membro 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

Note

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 ServiceEndpoint objetos do 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 o qual baixar e resolver metadados.

address
Uri

O endereço de metadados.

mode
MetadataExchangeClientMode

O modo de recuperação.

Retornos

Uma coleção de ServiceEndpoint objetos para o contrato especificado.

Exceções

O endereço ou contrato é null.

Exemplos

O exemplo de código a MetadataResolver seguir mostra o uso dos 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

Note

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 ServiceEndpoint objetos 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 baixar e resolver metadados.

address
Uri

O endereço de metadados.

mode
MetadataExchangeClientMode

O modo de recuperação.

client
MetadataExchangeClient

O MetadataExchangeClient usado para recuperar os metadados.

Retornos

Uma coleção de ServiceEndpoint objetos 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 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 diretamente System.ServiceModel.Description.MetadataExchangeClient .

Note

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