Compartilhar via


MetadataResolver.Resolve Método

Definição

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

ServiceEndpointCollection

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

ServiceEndpointCollection

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

ServiceEndpointCollection

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.

mode
MetadataExchangeClientMode

O modo de recuperação.

Retornos

ServiceEndpointCollection

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.

mode
MetadataExchangeClientMode

O modo de recuperação.

Retornos

ServiceEndpointCollection

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.

mode
MetadataExchangeClientMode

O modo de recuperação.

client
MetadataExchangeClient

O MetadataExchangeClient usado para recuperar os metadados.

Retornos

ServiceEndpointCollection

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.

Aplica-se a