MetadataResolver.Resolve Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Scarica e risolve un indirizzo di metadati in oggetti ServiceEndpoint per tale servizio.
Overload
Resolve(IEnumerable<ContractDescription>, EndpointAddress) |
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo di metadati specificato. |
Resolve(Type, EndpointAddress) |
Scarica e risolve un indirizzo di metadati in una raccolta di oggetti ServiceEndpoint per un contratto specificato a un indirizzo specificato. |
Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient) |
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo di metadati e l'oggetto MetadataExchangeClient specificati. |
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode) |
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo e la modalità di trasferimento specificati. |
Resolve(Type, Uri, MetadataExchangeClientMode) |
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per il contratto specificato utilizzando l'indirizzo e la modalità di trasferimento specificati. |
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient) |
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo, nonché la modalità e il client di trasferimento specificati. |
Commenti
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Per tutti i metodi Resolve
sia sincroni sia asincroni viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.
Resolve(IEnumerable<ContractDescription>, EndpointAddress)
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo di metadati specificato.
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
Parametri
- contracts
- IEnumerable<ContractDescription>
Contratti per i quali scaricare e risolvere metadati.
- address
- EndpointAddress
Indirizzo dei metadati.
Restituisce
Raccolta di oggetti ServiceEndpoint per il contratto specificato.
Eccezioni
L'indirizzo o la raccolta di contratti è null
.
contracts
è vuoto, almeno un membro di contracts
è null o contracts
contiene più di un contratto con lo stesso nome e spazio dei nomi.
Commenti
Vengono utilizzate le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient per recuperare i metadati e l'oggetto System.ServiceModel.Description.MetadataExchangeClientMode predefinito è MetadataExchangeClientMode.MetadataExchange.
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Nota
Viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.
Si applica a
Resolve(Type, EndpointAddress)
Scarica e risolve un indirizzo di metadati in una raccolta di oggetti ServiceEndpoint per un contratto specificato a un indirizzo specificato.
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
Parametri
- contract
- Type
Contratti per i quali scaricare e risolvere metadati.
- address
- EndpointAddress
Indirizzo dei metadati.
Restituisce
Raccolta di oggetti ServiceEndpoint per il contratto specificato.
Eccezioni
L'indirizzo o il contratto è null
.
Esempio
Nell'esempio di codice seguente viene illustrato l'utilizzo della classe MetadataResolver per restituire i metadati come raccolta di oggetti ServiceEndpoint che verranno quindi utilizzati per la connessione a un'istanza del servizio.
// 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();
}
}
Commenti
Utilizzare il metodo Resolve per specificare il contratto e l'indirizzo di metadati da utilizzare durante il download e la risoluzione dei metadati.
Vengono utilizzate le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient per recuperare i metadati e l'oggetto System.ServiceModel.Description.MetadataExchangeClientMode predefinito è MetadataExchangeClientMode.MetadataExchange.
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Nota
Viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.
Con questo metodo è necessario specificare un tipo di contratto. È possibile specificare il contratto dichiarando l'interfaccia del servizio nel codice client o usando un client WCF generato da Svcutil.exe. Se l'interfaccia cambia (aggiungendo una nuova operazione, ad esempio) è necessario aggiornare l'interfaccia nel codice client o generare un nuovo client WCF. In caso contrario, viene generata un'eccezione. Si dispone, ad esempio, di un servizio che implementa un contratto di servizio denominato ICalculator che definisce Add(), Sub(), Mult() e Div(). Si crea un'applicazione client e si genera un client WCF. quindi si aggiunge un metodo a ICalculator denominato Echo(). Se si scrive quindi un'applicazione che chiama Resolve(Type, EndpointAddress) senza generare un nuovo client WCF, viene visualizzata l'eccezione seguente.
Unhandled Exception: System.ServiceModel.Description.WsdlImporter+WsdlImportException: Cannot locate operation Echo in Contract ICalculator
.
Si applica a
Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo di metadati e l'oggetto MetadataExchangeClient specificati.
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
Parametri
- contracts
- IEnumerable<ContractDescription>
Contratti per i quali scaricare e risolvere metadati.
- address
- EndpointAddress
Indirizzo dei metadati.
- client
- MetadataExchangeClient
MetadataExchangeClient utilizzato per recuperare i metadati.
Restituisce
Raccolta di oggetti ServiceEndpoint per il contratto specificato.
Eccezioni
L'indirizzo, la raccolta di contratti o il client è null
.
contracts
è vuoto, almeno un membro di contracts
è null o contracts
contiene più di un contratto con lo stesso nome e spazio dei nomi.
Commenti
L'impostazione predefinita è System.ServiceModel.Description.MetadataExchangeClientMode è MetadataExchangeClientMode.MetadataExchange.
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Nota
Viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.
Si applica a
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo e la modalità di trasferimento specificati.
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
Parametri
- contracts
- IEnumerable<ContractDescription>
Contratti per i quali scaricare e risolvere metadati.
- address
- Uri
Indirizzo dei metadati.
Modalità di recupero.
Restituisce
Raccolta di oggetti ServiceEndpoint per il contratto specificato.
Eccezioni
L'indirizzo o la raccolta di contratti è null
.
contracts
è vuoto, almeno un membro di contracts
è null o contracts
contiene più di un contratto con lo stesso nome e spazio dei nomi.
Commenti
Vengono utilizzate le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient per recuperare i metadati.
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Nota
Viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.
Si applica a
Resolve(Type, Uri, MetadataExchangeClientMode)
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per il contratto specificato utilizzando l'indirizzo e la modalità di trasferimento specificati.
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
Parametri
- contract
- Type
Contratto per il quale scaricare e risolvere metadati.
- address
- Uri
Indirizzo dei metadati.
Modalità di recupero.
Restituisce
Raccolta di oggetti ServiceEndpoint per il contratto specificato.
Eccezioni
L'indirizzo o il contratto è null
.
Esempio
Nell'esempio di codice seguente viene illustrato l'utilizzo di MetadataResolver per scaricare e restituire metadati come raccolta di oggetti ServiceEndpoint utilizzando una richiesta HTTP GET anziché 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();
}
}
Commenti
Utilizzare il metodo Resolve per specificare un contratto, un indirizzo e il meccanismo di download da utilizzare.
Vengono utilizzate le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient per recuperare i metadati.
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Nota
Viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.
Si applica a
Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode, MetadataExchangeClient)
Risolve un indirizzo di metadati in oggetti ServiceEndpoint per i contratti specificati utilizzando l'indirizzo, nonché la modalità e il client di trasferimento specificati.
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
Parametri
- contracts
- IEnumerable<ContractDescription>
Contratti per i quali scaricare e risolvere metadati.
- address
- Uri
Indirizzo dei metadati.
Modalità di recupero.
- client
- MetadataExchangeClient
MetadataExchangeClient utilizzato per recuperare i metadati.
Restituisce
Raccolta di oggetti ServiceEndpoint per il contratto specificato.
Eccezioni
L'indirizzo, la raccolta di contratti o il client è null
.
contracts
è vuoto, almeno un membro di contracts
è null o contracts
contiene più di un contratto con lo stesso nome e spazio dei nomi.
Commenti
Per scaricare i metadati senza risolvere le informazioni contenute negli oggetti ServiceEndpoint, utilizzare direttamente l'oggetto System.ServiceModel.Description.MetadataExchangeClient.
Nota
Viene restituita una raccolta vuota se non sono stati importati endpoint o se al contratto non corrisponde un endpoint. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.