Risoluzione dei problemi relativi alla distribuzione di una soluzione Servizi RIA

La risoluzione dei problemi di una soluzione WCF RIA Services costituisce una sfida singolare in quanto l'eccezione si può verificare in uno dei numerosi livelli differenti. È necessario capire come vengono segnalati gli errori da questi diversi livelli per risolvere efficacemente i problemi relativi all'applicazione. In questo argomento vengono illustrati i livelli e vengono fornite alcune tecniche per la risoluzione dei problemi relativi alle applicazioni RIA Services quando si verifica un'eccezione. Inoltre, molti dei problemi che si possono verificare durante la distribuzione di RIA Services sono già illustrati nella nuova Guida alla distribuzione. Per informazioni dettagliate, vedere Guida alla distribuzione di soluzioni Servizi RIA.

Flusso dell'eccezione

In un'applicazione RIA Services , il flusso delle eccezioni segue l'ordine seguente dal livello d'origine più basso fino al client:

  1. Servizio del dominio

  2. Host dei Servizi RIA

  3. WCF

  4. ASP.NET

  5. IIS

  6. Applicazione Silverlight

Eccezioni propagate dai livelli

Abilitare le informazioni dettagliate sull'errore ASP.NET

Per impostazione predefinita, l'elemento customErrors del file Web.config è impostato su RemoteOnly per indicare che il client remoto non riceverà le informazioni dettagliate sull'errore ASP.NET. Per eseguire il debug dell'applicazione, impostare customErrors su Off in modo da poter visualizzare l'errore dettagliato ASP.NET dal client.

[!NOTA] Non rendere pubblicamente disponibile l'applicazione impostando customErrors su Off dal momento che il messaggio di errore può contenere informazioni riservate per gli utenti.

Utilizzare Fiddler per controllare gli errori

Tutte le eccezioni che provengono da un servizio del dominio vengono inviate al client Silverlight con il codice di stato dell'errore 200. Tutte le eccezioni generate al livello WCF o a un livello inferiore vengono inviate al client Silverlight con il codice di stato 404. È possibile eseguire il debugger HTTP Fiddler per vedere l'errore effettivo.

Passare direttamente al servizio del dominio

Il passaggio diretto al file con estensione svc per il servizio del dominio è spesso utile per vedere se il servizio WCF è disponibile. Tuttavia, la determinazione del percorso del file con estensione svc non è semplice perché il file con estensione svc non esiste nella soluzione. È possibile passare direttamente al servizio del dominio in un Web browser tramite il modello seguente:

http://[host]/[nome classe modificata per servizio del dominio].svc

Il nome della classe modificata si determina utilizzando il nome della classe completo e sostituendo con un trattino (-) ogni punto (.). Quindi un servizio del dominio denominato:

ExampleApplication.Web.CustomerDomainService

ha il file con estensione svc denominato:

ExampleApplication-Web-CustomerDomainService.svc

Se questo file è ospitato nel localhost, passare direttamente al file selezionando:

https://localhost/ExampleApplication-Web-CustomerDomainService.svc

Se il servizio è disponibile, verrà visualizzata una pagina Web con le informazioni sui servizi e su come testare un servizio. Se il servizio non è disponibile, verrà visualizzata una pagina di errori che può includere informazioni che consentiranno di determinare il problema. Se viene ricevuto un errore, l'eccezione probabilmente ha origine nel livello dell'host Servizi RIA.

Eseguire l'override del metodo OnError del servizio del dominio

Quando si verifica un errore irreversibile durante l'elaborazione di un'operazione DomainService, viene chiamato il metodo OnError. È possibile eseguire l'override di questo metodo per controllare gli errori prima che vengano inviati a client.

Utilizzare tecniche di analisi di WCF tradizionali

Le eccezioni vengono risolte a livello WCF proprio come si risolverebbero i problemi relativi a qualsiasi servizio WCF. Per ulteriori informazioni sulla traccia diagnostica per i servizi WCF, vedere Traccia.

Un'eccezione che ha origine nel livello WCF non verrà presentata in Fiddler. È possibile risolvere i problemi relativi a un'eccezione del servizio tentando di passare al file con estensione svc. Se è possibile passare al file con estensione svc senza errori, ma il servizio non riesce in fase di esecuzione, l'eccezione può provenire dal livello WCF.

Controllare le impostazioni di IIS e ASP.NET

Per le eccezioni generate ai livelli ASP.NET e IIS, le informazioni dell'applicazione RIA Services non sono incluse nello stack. È possibile ricevere eccezioni a questo livello per situazioni quali:

  • Il file Web.config non dispone dell'elemento HttpModule corretto per la versione di IIS in uso.

  • WCF non è attivato sul server Web.