MetadataResolver.Resolve Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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
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
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.
Modo de recuperación.
Devoluciones
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.
Modo de recuperación.
Devoluciones
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.
Modo de recuperación.
- client
- MetadataExchangeClient
MetadataExchangeClient utilizado para recuperar los metadatos.
Devoluciones
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.