MetadataResolver.Resolve Método

Definición

Descarga y resuelve una dirección de metadatos en los objetos ServiceEndpoint para ese servicio.

Sobrecargas

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección de los metadatos especificada.

Resolve(Type, EndpointAddress)

Descarga y resuelve una dirección de metadatos en una colección de objetos ServiceEndpoint para un contrato especificado en una dirección especificada.

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección de metadatos especificada y MetadataExchangeClient.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección y el modo de transferencia especificados.

Resolve(Type, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para el contrato especificado utilizando la dirección y el modo de transferencia especificados.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección, el modo de transferencia y el cliente de transferencia especificados.

Comentarios

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Para los métodos Resolve tanto sincrónicos como asincrónicos, se devuelve una colección vacía si no se importó ningún extremo o si ningún extremo coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección de los metadatos especificada.

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>

Los contratos para los que se van a descargar y resolver los metadatos.

address
EndpointAddress

Dirección de los metadatos.

Devoluciones

ServiceEndpointCollection

Colección de objetos ServiceEndpoint para el contrato especificado.

Excepciones

La dirección o la colección de contratos es null.

contracts está vacío, por lo menos un miembro de contracts es nulo o contracts contiene más de un contrato con el mismo nombre y espacio de nombres.

Comentarios

La configuración predeterminada en System.ServiceModel.Description.MetadataExchangeClient se utiliza para recuperar los metadatos y el System.ServiceModel.Description.MetadataExchangeClientMode predeterminado es MetadataExchangeClientMode.MetadataExchange.

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Nota

Se devuelve una colección vacía si no se importaron puntos de conexión o si ningún punto de conexión coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Se aplica a

Resolve(Type, EndpointAddress)

Descarga y resuelve una dirección de metadatos en una colección de objetos ServiceEndpoint para un contrato especificado en una dirección especificada.

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

Los contratos para los que se van a descargar y resolver los metadatos.

address
EndpointAddress

Dirección de los metadatos.

Devoluciones

ServiceEndpointCollection

Colección de objetos ServiceEndpoint para el contrato especificado.

Excepciones

La dirección o el contrato es null.

Ejemplos

El ejemplo de código siguiente muestra el uso de la clase MetadataResolver para devolver los metadatos como una colección de los objetos ServiceEndpoint que se utilizan a continuación para conectarse a una instancia del servicio.

// 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();
    }
}

Comentarios

Utilice el método Resolve para especificar el contrato y la dirección de los metadatos que se utilizarán al descargar y resolver metadatos.

La configuración predeterminada en System.ServiceModel.Description.MetadataExchangeClient se utiliza para recuperar los metadatos y el System.ServiceModel.Description.MetadataExchangeClientMode predeterminado es MetadataExchangeClientMode.MetadataExchange.

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Nota

Se devuelve una colección vacía si no se importaron puntos de conexión o si ningún punto de conexión coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Este método requiere que especifique un tipo de contrato. Puede especificar el contrato declarando la interfaz de servicio en el código de cliente o mediante un cliente WCF generado por Svcutil.exe. Si la interfaz cambia (agregando una nueva operación, por ejemplo), debe actualizar la interfaz en el código de cliente o generar un nuevo cliente WCF. Si no lo hace, se producirá una excepción . Por ejemplo, suponga que tiene un servicio que implementa un contrato de servicios denominado ICalculator que define Add(), Sub(), Mult() y Div(). Cree una aplicación cliente y genere un cliente WCF. Agrega a continuación un método a ICalculator, denominado Echo(). Si después escribe una aplicación que llama Resolve(Type, EndpointAddress) sin generar un nuevo cliente WCF, obtendrá la siguiente excepción.

Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator.

Se aplica a

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección de metadatos especificada y 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>

Los contratos para los que se van a descargar y resolver los metadatos.

address
EndpointAddress

Dirección de los metadatos.

client
MetadataExchangeClient

MetadataExchangeClient utilizado para recuperar los metadatos.

Devoluciones

ServiceEndpointCollection

Colección de objetos ServiceEndpoint para el contrato especificado.

Excepciones

La dirección, la colección de contratos o el cliente es null.

contracts está vacío, por lo menos un miembro de contracts es nulo o contracts contiene más de un contrato con el mismo nombre y espacio de nombres.

Comentarios

El valor predeterminado de System.ServiceModel.Description.MetadataExchangeClientMode es MetadataExchangeClientMode.MetadataExchange.

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Nota

Se devuelve una colección vacía si no se importaron puntos de conexión o si ningún punto de conexión coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Se aplica a

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección y el modo de transferencia 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>

Los contratos para los que se van a descargar y resolver los metadatos.

address
Uri

Dirección de los metadatos.

mode
MetadataExchangeClientMode

Modo de recuperación.

Devoluciones

ServiceEndpointCollection

Colección de objetos ServiceEndpoint para el contrato especificado.

Excepciones

La dirección o la colección de contratos es null.

contracts está vacío, por lo menos un miembro de contracts es nulo o contracts contiene más de un contrato con el mismo nombre y espacio de nombres.

Comentarios

La configuración predeterminada en System.ServiceModel.Description.MetadataExchangeClient se utiliza para recuperar los metadatos.

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Nota

Se devuelve una colección vacía si no se importaron puntos de conexión o si ningún punto de conexión coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Se aplica a

Resolve(Type, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para el contrato especificado utilizando la dirección y el modo de transferencia 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

El contrato para el que se van a descargar y resolver los metadatos.

address
Uri

Dirección de los metadatos.

mode
MetadataExchangeClientMode

Modo de recuperación.

Devoluciones

ServiceEndpointCollection

Colección de objetos ServiceEndpoint para el contrato especificado.

Excepciones

La dirección o el contrato es null.

Ejemplos

El ejemplo de código siguiente muestra el uso de MetadataResolver para descargar y devolver los metadatos como una colección de objetos ServiceEndpoint utilizando una solicitud HTTP GET en lugar 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();
    }
}

Comentarios

Utilice el método Resolve para especificar un contrato y direcciones y el mecanismo de la descarga que se va a utilizar.

La configuración predeterminada en System.ServiceModel.Description.MetadataExchangeClient se utiliza para recuperar los metadatos.

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Nota

Se devuelve una colección vacía si no se importaron puntos de conexión o si ningún punto de conexión coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Se aplica a

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)

Resuelve una dirección de metadatos en objetos ServiceEndpoint para los contratos especificados utilizando la dirección, el modo de transferencia y el cliente de transferencia 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>

Los contratos para los que se van a descargar y resolver los metadatos.

address
Uri

Dirección de los metadatos.

mode
MetadataExchangeClientMode

Modo de recuperación.

client
MetadataExchangeClient

MetadataExchangeClient utilizado para recuperar los metadatos.

Devoluciones

ServiceEndpointCollection

Colección de objetos ServiceEndpoint para el contrato especificado.

Excepciones

La dirección, la colección de contratos o el cliente es null.

contracts está vacío, por lo menos un miembro de contracts es nulo o contracts contiene más de un contrato con el mismo nombre y espacio de nombres.

Comentarios

Para descargar metadatos pero no resolver la información en objetos ServiceEndpoint, use directamente System.ServiceModel.Description.MetadataExchangeClient.

Nota

Se devuelve una colección vacía si no se importaron puntos de conexión o si ningún punto de conexión coincidía con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de la advertencia.

Se aplica a