Procedura: ospitare ed eseguire un servizio Windows Communication Foundation di base
Questa è la terza delle sei attività necessarie per creare un servizio Windows Communication Foundation (WCF) di base e un client in grado di chiamare il servizio. Per una panoramica di tutte e sei le attività, vedere l'argomento Esercitazione introduttiva.
In questo argomento viene illustrato come eseguire un servizio Windows Communication Foundation (WCF) di base. Questa procedura è costituita dai passaggi seguenti:
- Creare un indirizzo di base per il servizio.
- Creare un host del servizio per il servizio.
- Consentire lo scambio di metadati.
- Aprire l’host del servizio.
Nell'esempio riportato dopo la procedura, viene fornito un elenco completo del codice scritto per questa attività. Aggiungere il codice riportato di seguito al metodo Main()
definito nella classe Program
, che è stata generata al momento della creazione della soluzione Service
.
Per configurare un indirizzo di base per il servizio
- Creare un'istanza Uri per l'indirizzo di base del servizio. L'URI specifica lo schema HTTP, il computer locale, il numero di porta 8000 e il percorso ServiceModelSample/Service del servizio specificato per lo spazio dei nomi del servizio all'interno del contratto del servizio.
Per ospitare il servizio
Importare lo spazio dei nomi
System.ServiceModel.Description
. Questa riga di codice deve essere inserita all'inizio del file Program.cs/Program.vb con il resto delle istruzioni using o imports.Creare una nuova istanza ServiceHost per ospitare il servizio. È necessario specificare il tipo che implementa il contratto di servizio e l'indirizzo di base. Per questo esempio, l'indirizzo di base è
https://localhost:8000/ServiceModelSamples/Service
eCalculatorService
è il tipo che implementa il contratto di servizio.Aggiungere un'istruzione try-catch che intercetta un elemento CommunicationException e aggiungere il codice ai successivi tre passaggi nel blocco try. La clausola catch deve visualizzare un messaggio di errore, quindi chiamare
selfHost.Abort()
.Aggiungere un endpoint che espone il servizio. A tale scopo, è necessario specificare il contratto esposto dall'endpoint, un'associazione e l'indirizzo per l'endpoint. Per questo esempio, specificare
ICalculator
come contratto,WSHttpBinding
come associazione eCalculatorService
come indirizzo. Si noti che in questo caso l'indirizzo endpoint è un indirizzo relativo. L'indirizzo completo dell'endpoint è costituito dalla combinazione dell’indirizzo di base e dell'indirizzo dell'endpoint. In questo caso l'indirizzo completo èhttps://localhost:8000/ServiceModelSamples/Service/CalculatorService
.Consentire lo scambio di metadati. A questo scopo, aggiungere il comportamento dei metadati di un servizio. Creare innanzitutto un'istanza ServiceMetadataBehavior, impostare la proprietà HttpGetEnabled su true, quindi aggiungere il nuovo comportamento al servizio. Per ulteriori informazioni sui problemi relativi alla sicurezza durante la pubblicazione di metadati, vedere Considerazioni sulla protezione con metadati.
Aprire ServiceHost e attendere i messaggi in arrivo. Quando l'utente preme il tasto INVIO, chiudere ServiceHost.
Per verificare il funzionamento del servizio
Eseguire service.exe da Visual Studio. In caso di esecuzione in Windows Vista, il servizio deve essere eseguito con privilegi di amministratore. Poiché Visual Studio è stato eseguito con privilegi di amministratore, anche service.exe viene eseguito con privilegi di amministratore. È inoltre possibile avviare un nuovo prompt dei comandi che esegua il servizio con privilegi di amministratore e utilizzarlo per eseguire service.exe.
Aprire Internet Explorer e accedere alla pagina di debug del servizio all'indirizzo https://localhost:8000/ServiceModelSamples/Service.
Esempio
Nell'esempio seguente sono inclusi il contratto di servizio e l'implementazione dai passaggi precedenti nell'esercitazione e l'hosting del servizio in un'applicazione console. Compilare quanto segue in un eseguibile denominato Service.exe.
Assicurarsi di fare riferimento a System.ServiceModel.dll al momento di compilare il codice.
Nota
Servizi come questo richiedono l'autorizzazione per registrare gli indirizzi HTTP nel computer per l'ascolto. Gli account amministratore dispongono di questa autorizzazione, ma agli account non amministratore è necessario concedere l'autorizzazione per spazi dei nomi HTTP. Per ulteriori informazioni su come configurare prenotazioni dello spazio dei nomi, vedere Configurazione di HTTP e HTTPS. In caso di esecuzione in Visual Studio, il servizio.exe deve essere eseguito con privilegi di amministratore.
Il servizio è ora in esecuzione. Accedere a Procedura: creare un client di Windows Communication Foundation. Per informazioni sulla risoluzione dei problemi, vedere Risoluzione dei problemi relativi all'esercitazione introduttiva.