Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo MetadataResolver.Resolve (Type, EndpointAddress)

 

Data di pubblicazione: ottobre 2016

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

Spazio dei nomi:   System.ServiceModel.Description
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public static ServiceEndpointCollection Resolve(
	Type contract,
	EndpointAddress address
)

Parametri

contract
Type: System.Type

Contratti per i quali scaricare e risolvere metadati.

address
Type: System.ServiceModel.EndpointAddress

Indirizzo dei metadati.

Valore restituito

Type: System.ServiceModel.Description.ServiceEndpointCollection

Raccolta di oggetti ServiceEndpoint per il contratto specificato.

Exception Condition
ArgumentNullException

L'indirizzo o il contratto è null.

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.

System_CAPS_noteNota

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 utilizzando un client WCF generato da Svcutil.exe. Se l'interfaccia viene modificata, ad esempio tramite l'aggiunta di una nuova operazione, è necessario aggiornarla 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 in seguito si scrive un'applicazione che chiama il metodo 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.

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();
  }
}

.NET Framework
Disponibile da 3.0
Torna all'inizio
Mostra: