MetadataResolver.Resolve Metodo

Definizione

Scarica e risolve un indirizzo di metadati negli ServiceEndpoint oggetti per tale servizio.

Overload

Nome Descrizione
Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti per i contratti specificati usando l'indirizzo di metadati specificato.

Resolve(Type, EndpointAddress)

Scarica e risolve un indirizzo di metadati in una raccolta di ServiceEndpoint oggetti per un contratto specificato in un indirizzo specificato.

Resolve(IEnumerable<ContractDescription>, EndpointAddress, MetadataExchangeClient)

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti per i contratti specificati usando l'indirizzo dei metadati e MetadataExchangeClient.

Resolve(IEnumerable<ContractDescription>, Uri, MetadataExchangeClientMode)

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti per i contratti specificati utilizzando l'indirizzo e la modalità di trasferimento specificati.

Resolve(Type, Uri, MetadataExchangeClientMode)

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti per il contratto specificato utilizzando l'indirizzo e la modalità di trasferimento specificati.

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

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti per i contratti specificati usando l'indirizzo, la modalità di trasferimento e il client di trasferimento specificati.

Commenti

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Per tutti i metodi sincroni e asincroni Resolve , viene restituita una raccolta vuota se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.

Resolve(IEnumerable<ContractDescription>, EndpointAddress)

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti per i contratti specificati usando 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 i metadati.

address
EndpointAddress

Indirizzo dei metadati.

Valori restituiti

Raccolta di ServiceEndpoint oggetti 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 lo stesso spazio dei nomi.

Commenti

Le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient vengono usate per recuperare i metadati e il valore predefinito System.ServiceModel.Description.MetadataExchangeClientMode è MetadataExchangeClientMode.MetadataExchange.

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Note

Se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto, viene restituita una raccolta vuota. 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 ServiceEndpoint oggetti per un contratto specificato in 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 i metadati.

address
EndpointAddress

Indirizzo dei metadati.

Valori restituiti

Raccolta di ServiceEndpoint oggetti per il contratto specificato.

Eccezioni

L'indirizzo o il contratto è null.

Esempio

Nell'esempio di codice seguente viene illustrato l'uso della MetadataResolver classe per restituire metadati come raccolta di ServiceEndpoint oggetti che vengono quindi usati per connettersi 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 Resolve metodo per specificare il contratto e l'indirizzo dei metadati da usare durante il download e la risoluzione dei metadati.

Le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient vengono usate per recuperare i metadati e il valore predefinito System.ServiceModel.Description.MetadataExchangeClientMode è MetadataExchangeClientMode.MetadataExchange.

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Note

Se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto, viene restituita una raccolta vuota. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.

Questo metodo richiede di 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 ,ad esempio aggiungendo una nuova operazione, è necessario aggiornare l'interfaccia nel codice client o generare un nuovo client WCF. In caso contrario, viene generata un'eccezione. Ad esempio, si dispone 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. Si aggiunge quindi un metodo a ICalculator denominato Echo(). Se si scrive quindi un'applicazione che chiama Resolve(Type, EndpointAddress) senza generare un nuovo client WCF, viene generata 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 negli ServiceEndpoint oggetti per i contratti specificati usando l'indirizzo dei metadati e 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

Parametri

contracts
IEnumerable<ContractDescription>

Contratti per i quali scaricare e risolvere i metadati.

address
EndpointAddress

Indirizzo dei metadati.

client
MetadataExchangeClient

Oggetto MetadataExchangeClient utilizzato per recuperare i metadati.

Valori restituiti

Raccolta di ServiceEndpoint oggetti 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 lo stesso spazio dei nomi.

Commenti

L'impostazione predefinita System.ServiceModel.Description.MetadataExchangeClientMode è MetadataExchangeClientMode.MetadataExchange.

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Note

Se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto, viene restituita una raccolta vuota. 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 negli ServiceEndpoint oggetti 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 i metadati.

address
Uri

Indirizzo dei metadati.

mode
MetadataExchangeClientMode

Modalità di recupero.

Valori restituiti

Raccolta di ServiceEndpoint oggetti 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 lo stesso spazio dei nomi.

Commenti

Le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient vengono usate per recuperare i metadati.

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Note

Se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto, viene restituita una raccolta vuota. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.

Si applica a

Resolve(Type, Uri, MetadataExchangeClientMode)

Risolve un indirizzo di metadati negli ServiceEndpoint oggetti 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 i metadati.

address
Uri

Indirizzo dei metadati.

mode
MetadataExchangeClientMode

Modalità di recupero.

Valori restituiti

Raccolta di ServiceEndpoint oggetti per il contratto specificato.

Eccezioni

L'indirizzo o il contratto è null.

Esempio

Nell'esempio di codice seguente viene illustrato l'uso di MetadataResolver per scaricare e restituire metadati come raccolta di ServiceEndpoint oggetti usando 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

Usare il Resolve metodo per specificare un contratto e un indirizzo e il meccanismo di download da usare.

Le impostazioni predefinite in System.ServiceModel.Description.MetadataExchangeClient vengono usate per recuperare i metadati.

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Note

Se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto, viene restituita una raccolta vuota. 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 negli ServiceEndpoint oggetti per i contratti specificati usando l'indirizzo, la modalità di trasferimento 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 i metadati.

address
Uri

Indirizzo dei metadati.

mode
MetadataExchangeClientMode

Modalità di recupero.

client
MetadataExchangeClient

Oggetto MetadataExchangeClient utilizzato per recuperare i metadati.

Valori restituiti

Raccolta di ServiceEndpoint oggetti 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 lo stesso spazio dei nomi.

Commenti

Per scaricare i metadati ma non risolvere le informazioni in ServiceEndpoint oggetti, usare direttamente .System.ServiceModel.Description.MetadataExchangeClient

Note

Se non sono stati importati endpoint o se nessun endpoint corrisponde al contratto, viene restituita una raccolta vuota. Se viene restituita una raccolta vuota, viene scritta una traccia di avviso.

Si applica a