MetadataResolver.Resolve Método

Definición

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

Sobrecargas

Nombre Description
Resolve(IEnumerable<ContractDescription>, EndpointAddress)

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

Resolve(Type, EndpointAddress)

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

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

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

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

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

Resolve(Type, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en los ServiceEndpoint objetos del contrato especificado mediante la dirección y el modo de transferencia especificados.

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

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

Comentarios

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

Para todos los métodos sincrónicos y asincrónicos Resolve , se devuelve una colección vacía si no se importaron puntos de conexión o si no coinciden con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de advertencia.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

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

Contratos para los que se van a descargar y resolver metadatos.

address
EndpointAddress

Dirección de metadatos.

Devoluciones

Colección de ServiceEndpoint objetos para el contrato especificado.

Excepciones

La colección address o contracts es null.

contractsestá vacío, al menos un miembro de es NULL o contracts contiene más de contracts un contrato con el mismo nombre y espacio de nombres.

Comentarios

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

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

Note

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

Se aplica a

Resolve(Type, EndpointAddress)

Descarga y resuelve una dirección de metadatos en una colección de ServiceEndpoint objetos 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

Contratos para los que se van a descargar y resolver metadatos.

address
EndpointAddress

Dirección de metadatos.

Devoluciones

Colección de ServiceEndpoint objetos para el contrato especificado.

Excepciones

La dirección o el contrato es null.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la MetadataResolver clase para devolver metadatos como una colección de ServiceEndpoint objetos que, a continuación, se usan para conectarse a una instancia de 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

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

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

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

Note

Se devuelve una colección vacía si no se importó ningún punto de conexión o si ningún extremo coincide con el contrato. Si se devuelve una colección vacía, se escribe un seguimiento de 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 usando 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 produce una excepción. Por ejemplo, tiene un servicio que implementa un contrato de servicio denominado ICalculator que define Add(), Sub(), Mult() y Div(). Cree una aplicación cliente y genere el cliente WCF. A continuación, agregue un método a ICalculator llamado 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 los objetos de los ServiceEndpoint contratos especificados mediante 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>

Contratos para los que se van a descargar y resolver metadatos.

address
EndpointAddress

Dirección de metadatos.

client
MetadataExchangeClient

que MetadataExchangeClient se usa para recuperar los metadatos.

Devoluciones

Colección de ServiceEndpoint objetos para el contrato especificado.

Excepciones

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

contractsestá vacío, al menos un miembro de es NULL o contracts contiene más de contracts 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 ServiceEndpoint objetos, use System.ServiceModel.Description.MetadataExchangeClient directamente.

Note

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

Se aplica a

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en los objetos de los ServiceEndpoint contratos especificados mediante 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>

Contratos para los que se van a descargar y resolver metadatos.

address
Uri

Dirección de metadatos.

mode
MetadataExchangeClientMode

Modo de recuperación.

Devoluciones

Colección de ServiceEndpoint objetos para el contrato especificado.

Excepciones

La colección address o contracts es null.

contractsestá vacío, al menos un miembro de es NULL o contracts contiene más de contracts un contrato con el mismo nombre y espacio de nombres.

Comentarios

La configuración predeterminada de System.ServiceModel.Description.MetadataExchangeClient se usa para recuperar los metadatos.

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

Note

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

Se aplica a

Resolve(Type, Uri, MetadataExchangeClientMode)

Resuelve una dirección de metadatos en los ServiceEndpoint objetos del contrato especificado mediante 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

Contrato para el que se van a descargar y resolver metadatos.

address
Uri

Dirección de metadatos.

mode
MetadataExchangeClientMode

Modo de recuperación.

Devoluciones

Colección de ServiceEndpoint objetos para el contrato especificado.

Excepciones

La dirección o contrato es null.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de MetadataResolver para descargar y devolver metadatos como una colección de ServiceEndpoint objetos mediante 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

Use el Resolve método para especificar un contrato y una dirección y el mecanismo de descarga que se va a usar.

La configuración predeterminada de System.ServiceModel.Description.MetadataExchangeClient se usa para recuperar los metadatos.

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

Note

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

Se aplica a

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

Resuelve una dirección de metadatos en los objetos de los ServiceEndpoint contratos especificados mediante 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>

Contratos para los que se van a descargar y resolver metadatos.

address
Uri

Dirección de metadatos.

mode
MetadataExchangeClientMode

Modo de recuperación.

client
MetadataExchangeClient

que MetadataExchangeClient se usa para recuperar los metadatos.

Devoluciones

Colección de ServiceEndpoint objetos para el contrato especificado.

Excepciones

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

contractsestá vacío, al menos un miembro de es NULL o contracts contiene más de contracts un contrato con el mismo nombre y espacio de nombres.

Comentarios

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

Note

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

Se aplica a