Limitazioni del debug di WCF
Sono disponibili tre modalità per avviare il debug di un servizio WCF:
Si esegue il debug di un processo client che chiama un servizio. Il debugger esegue le istruzioni del servizio. Il servizio non deve essere presente nella stessa soluzione dell'applicazione client.
Si esegue il debug di un processo client che effettua una richiesta a un servizio. Il servizio deve essere parte della soluzione.
Si utilizza Connetti a processo per la connessione a un servizio attualmente in esecuzione. Il debug inizia all'interno del servizio.
In questo argomento vengono descritte le limitazioni di questi scenari.
Limitazioni dell'esecuzione di istruzioni in un servizio
Per eseguire istruzioni in un servizio da un'applicazione client di cui si esegue il debug, è necessario soddisfare le seguenti condizioni:
Il client deve chiamare il servizio utilizzando un oggetto client sincrono.
L'operazione del contratto non può essere unidirezionale.
Se il server è asincrono, non è possibile visualizzare lo stack di chiamate completo durante l'esecuzione del codice nel servizio.
È necessario abilitare il debug con il codice riportato di seguito nel file app.config o web.config:
<system.web> <compilation debug="true" /> </system.web>
È necessario aggiungere questo codice solo una volta. È possibile aggiungere il codice modificando il file con estensione config o attraverso la connessione al servizio utilizzando Connetti a processo. Quando si utilizza Connetti a processo in un servizio, il codice di debug viene aggiunto automaticamente al file config. Successivamente, è possibile eseguire il debug e le istruzioni nel servizio senza dover modificare il file config.
Limitazioni dell'uscita da un servizio
L'uscita da un servizio e il ritorno al client presenta le stesse limitazioni descritte per l'esecuzione delle istruzioni di un servizio. Inoltre, il debugger deve essere connesso al client. Se è in corso il debug di un client e l'esecuzione di istruzioni in un servizio, il debugger rimane connesso al servizio. Ciò si applica sia che il client venga avviato utilizzando Avvia debug sia che ci si connetta al client utilizzando Connetti a processo. Se il debug è stato avviato mediante la connessione al servizio, il debugger non è ancora connesso al client. In tal caso, se occorre uscire dal servizio e tornare al client, è innanzitutto necessario utilizzare Connetti a processo per la connessione manuale al client.
Limitazioni della connessione automatica a un servizio
La connessione automatica a un servizio presenta le limitazioni riportate di seguito:
Il servizio deve far parte della soluzione di Visual Studio di cui si sta eseguendo il debug.
Il servizio deve essere ospitato. Può essere parte di un progetto di sito Web (File system e HTTP), un progetto di applicazione Web (File system e HTTP) o un progetto di libreria di servizi WCF. I progetti di libreria di servizi WCF possono essere librerie di servizi o librerie di servizi di flusso di lavoro.
Il servizio deve essere richiamato da un client WCF.
È necessario abilitare il debug con il codice riportato di seguito nel file app.config o web.config:
<system.web> <compilation debug="true" /> <system.web>
Self-hosting
Un servizio self-hosted è un servizio WCF che non viene eseguito in IIS, nell'host del servizio WCF o nel server di sviluppo ASP.NET. Per informazioni su come eseguire il debug di un servizio self-hosted, vedere Procedura: Eseguire il debug di un servizio WCF self-hosted.
Se viene visualizzato il messaggio di errore "Impossibile eseguire automaticamente l'istruzione nel server". Ripristinare l'installazione di Visual Studio per tentare di risolvere il problema. Questo problema può verificarsi se si installa Visual Studio prima di installare ASP.NET.