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 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.
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.
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.
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.