Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Gestione di errori a livello applicazione
venerdì 26 novembre 2004 - 09.34
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
ven 26 nov 2004 - 09:34
Ho provato a gestire gli errori non controllati con blocchi try-catch seguendo le istruzioni di questo link
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ita/dv_vbcode/html/vbtskcodeexamplehandlingapplicationlevelerror.asp
Le cose funzionano abbastanza bene, ma vorrei arrivare ad un livello di dettaglio superiore, infatti vorrei poter gestire gli errori descritti come 401.1, 401.2 ecc. anziché solo quelli descritti nel link (403,404,...).
Ho provato a guardare, con .NET reflector ;), come è fatta la funzione GetHttpCode richiamata nella Select Case, e ho notato che restituisce solo i valori 500, 401 o 414.
Quindi non vedo come possano essere recuperati i vari case dell'esempio.
Qualcuno saprebbe aiutarmi?
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
ven 26 nov 2004 - 12:34
Sto facendo molti test su questa gestione degli errori e ho trovato un "piccolo" problema: prima mi funzionava perché avevo messo ne web.config
<customErrors mode="On" defaultRedirect="Errors.aspx">
questo però mi nascondeva il vero problema: ossia il fatto che nel global.asax, nella sub Application_Error il comando Server.Transfer("Errors.aspx") viene SNOBBATO.
Ora che ho tolto la defaultRedirect ci passa sopra senza entrare nella pagina e visualizza l'errore.
Ho provato anche mettendo nel web.config mode="Off" o mode="RemoteOnly" e nulla. ho tolto completamente il tag del <customErrors>, ma nulla!!!
Cosa posso fare? Qualcuno sa dirmi perché il Server.Transfer non venga lanciato?
LudovicoVan
Profilo
| Junior Member
106
messaggi | Data Invio:
ven 26 nov 2004 - 13:31
Non mi pare che tu possa fare un Server.Transfer dall'Application_Error. D'altra parte, la direttiva customErrors mi sembra il modo "usuale" di procedere.
Per un esempio puoi dare un occhiata qui:
http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfCustomerrorsSection.asp
HTH. -LV
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
ven 26 nov 2004 - 13:42
Intanto grazie del link che potrebbe essere un'ottima alternativa, ma mi piacerebbe comunque sapere dove sbaglio...
In fondo quello che faccio è commentato nel link che ho indicato sotto e non vedo perché non dovrebbe funzionare. Viene proprio inserito il codice con Server.Transfer dentro alla sub Application_Error...
Magari devo configurare qualcosa?
weird
Profilo
| Newbie
1
messaggi | Data Invio:
ven 26 nov 2004 - 13:59
Ho un grosso problema!
Tipo che se sto collegato, a tempo indeterminato succede che appare una schermata blu con scritto
scaricamento della memoria fisica.
Secondo me ho un virus! Aiutatemi vi prego sto impazzendo.
Non voglio formattare ancora [ho win2000]
Aspetto soluzione! Magari! Ma sarebbe grandioso. Ciao :)
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
ven 26 nov 2004 - 14:09
Ti converrebbe aprire un thread apposta. In questo stiamo parlando d'altro...
LudovicoVan
Profilo
| Junior Member
106
messaggi | Data Invio:
sab 27 nov 2004 - 10:25
Ciao Klaus,
ho guardato il link e hai ragione, si dovrebbe poter fare. L'unica cosa che mi viene in mente è "Dopo la gestione, è necessario cancellare un errore chiamando il metodo ClearError dell'oggetto Server (classe HttpServerUtility)"... ce l'hai?
In generale, ti consiglierei comunque di usare il Web.config. Questo perché (lo spiega anche la documentazione Microsoft) avere la configurazione in un file di testo modificabile dal web master, senza nemmeno la necessità di riavviare alcunché, è una cosa, altra cosa è una modifica al Global.asax che richiede l'intervento del programmatore, la ricompilazione dell'applicazione e l'eventuale deployment della nuova versione!
Un esempio per tutti: per avere un errore dettagliato, ti basta mettere temporaneamente a Off il customErrors; la stessa cosa nel Global.asax richiede invece tutto ciò cui accennavo sopra.
Comunque, qui è questione di "pratiche", dunque anche campo di opinioni... ;)
A presto. -LV
Klaus-zanini
Profilo
| Senior Member
364
messaggi | Data Invio:
lun 29 nov 2004 - 09:24
Ciao Ludovico,
ho trovato dove sbagliavo (una cavolata, ultimamente ne faccio tante!!!).
La pagina di errore era allo stesso livello del global.asax quindi mettevo Server.Transfer("Errors.aspx"), ma non mi rendevo conto che la pagina che lanciava l'errore non era il global.asax ma una situata in una subdirectory del progetto web, quindi cercava al suo livello la pagina Errors.aspx anziché cercarla in un livello superiore.
-.-
L'importante è che adesso funziona.
Grazie klaus
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !