Condividi tramite


MetadataResolver.Resolve Metodo

Definizione

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

ServiceEndpointCollection

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

ServiceEndpointCollection

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

ServiceEndpointCollection

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.

mode
MetadataExchangeClientMode

Modalità di recupero.

Restituisce

ServiceEndpointCollection

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.

mode
MetadataExchangeClientMode

Modalità di recupero.

Restituisce

ServiceEndpointCollection

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.

mode
MetadataExchangeClientMode

Modalità di recupero.

client
MetadataExchangeClient

MetadataExchangeClient utilizzato per recuperare i metadati.

Restituisce

ServiceEndpointCollection

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.

Si applica a