2012-02-15 13 views
5

Sto avendo difficoltà a executting un evento On_Error nel file Global.asax. Quando l'applicazione riceve un errore, dovrebbe passare al file Global.asax, registrare l'errore nel database e reindirizzare alla pagina di errore personalizzata. Il codice sopra riportato funziona bene nel mio locale, ma una volta distribuito lo stesso nella macchina DEV, Global.asax non viene eseguito.Come verificare se il file Global.asax viene chiamato

reindirizza sempre alla pagina di errore custome ho citato nel web.config

<customErrors mode="On" defaultRedirect="/Error_Redirect.asp"> 
     <error statusCode="404" redirect="/404.asp"/> 
    </customErrors> 

La struttura del progetto in IIS è come Test1 \ Test 2. Il codice di gestione degli errori che sto cercando è in Test 2 e il suo un diectory virtuale nel IIS.If ho qualche errore nel file web.config, come "Sezione già accennato", quindi l'errore sta colpendo il file Global.asax. Se ci sono errori di runtime come quelli qui sotto, non arriverà al file Global.asax.

Int32 i, j, k; 
i = 10; 

j = 0; 

k = i/j; 

Response.Write(k); 

. Mi sono persino stancato impostando la modalità su Off/RemoteOnly. Qualche suggerimento ??

Grazie,

+0

Forse questo aiuta: http://stackoverflow.com/questions/5604144/application-error-does-not-fire –

+0

@Tim Ho provato quelle opzioni. Ma sembra che l'attivazione di Global.asax sia incoerente. A volte colpisce il file Global.asax, ma non costante. Mi chiedo se ha qualcosa a che fare con le impostazioni di IIS. – Vani

+0

Non intendi l'evento Application_Error? Spara l'evento solo se CustomErrors mode = "Off". –

risposta

0

c'è qualche possibilità che l'applicazione è sempre caricato in più processi ASP.NET o domini? Poiché stai utilizzando "Test1/Test2", pensi che per qualche volta un URL che chiami vada via "Test1/Test2" e talvolta tramite "Test2"?

Recentemente, stavo lavorando su un POC in ASP.NET e per sbaglio spostato Global.asax in una sottocartella piuttosto che la radice dell'applicazione. Mi aspettavo un certo numero di codice nell'evento di avvio dell'applicazione, che non è mai stato licenziato. Dopo averlo spostato nella radice dell'applicazione, questo ha iniziato a funzionare come previsto.

Quindi, quando si chiama tramite "Test2" il gestore delle eccezioni di Global.asax viene attivato mentre si chiama tramite "Test1/Test2", quindi Global.asax non viene attivato.

+0

La mia struttura di cartelle è come FolderA/FolderB. La cartella B contiene il file .aspx.cs [che contiene l'errore] e il file global.asax. – Vani

1

Il tuo browser può memorizzare nella cache il reindirizzamento. prova a modificare leggermente l'URL per essere diverso. Come aggiungere? Qualcosa dopo il tuo attuale URL, quindi puoi essere certo che non sia memorizzato nella cache del tuo browser.

Oppure si può anche provare spostamento ctrl eliminare nel browser per eliminare la cache.

Se avete bisogno di essere sicuri che l'ASax globale sta andando si può usare qualcosa di simile nel tuo Hadler evento all'interno del file Global.asax.

HttpContext.Current.Response.Write("TEST"); 
HttpContext.Current.Response.End(); 
2

Si dovrebbe provare e rilasciare il file precompiledapp.config da root. (almeno temporaneamente rinominalo)

Problemi correlati