2012-02-15 13 views
5

Tengo dificultades para ejecutar un evento On_Error en el archivo Global.asax. Cuando la aplicación recibe un error, debe ir al archivo Global.asax, registrar el error en la base de datos y redireccionar a la página de error personalizada. El código anterior funciona bien en mi local, pero una vez que despliego el mismo en la máquina DEV, Global.asax no se está ejecutando.Cómo comprobar si se está llamando al archivo Global.asax

Siempre redirige a la página de error atención al cliente al que he mencionado en el web.config

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

La estructura del proyecto en IIS es como Prueba1 \ Prueba 2. El código de manejo de errores que estoy tratando está en la Prueba 2 y es una dieta virtual en el IIS. Si tengo algún error en el archivo web.config, como "Sección ya mencionada", entonces el error está golpeando el archivo Global.asax. Si hay algún error de tiempo de ejecución como el siguiente, no está llegando al archivo Global.asax.

Int32 i, j, k; 
i = 10; 

j = 0; 

k = i/j; 

Response.Write(k); 

. Incluso me cansé de configurar el modo en Off/RemoteOnly. ¿Alguna sugerencia?

Gracias,

+0

Quizás esto ayude: http://stackoverflow.com/questions/5604144/application-error-does-not-fire –

+0

@Tim Probé esas opciones. Pero parece que la activación de Global.asax es inconsistente. A veces está golpeando el archivo Global.asax, pero no es constante. Me pregunto si tiene algo que ver con la configuración de IIS. – Vani

+0

¿No te refieres al evento Application_Error? Solo activa el evento si el modo customErrors = "Off". –

Respuesta

0

¿Hay alguna posibilidad de que su aplicación está siendo cargado en varios procesos de ASP.NET o dominios? Como está utilizando "Test1/Test2", ¿cree que, por casualidad, algunas veces una URL que llama pasa por "Test1/Test2" y, a veces, por "Test2"?

Recientemente, estaba trabajando en un POC en ASP.NET y por error moví el Global.asax a una subcarpeta en lugar de la raíz de la aplicación. Esperaba que se activara algún código en el evento de inicio de la aplicación, que nunca fue despedido. Después de moverlo de vuelta a la raíz de la aplicación, esto comenzó a funcionar como se esperaba.

Por lo tanto, cuando llame a través de "Test2", el manejador de excepciones de su Global.asax se dispara mientras que cuando llama a través de "Test1/Test2", su Global.asax no se dispara.

+0

Mi estructura de carpetas es como FolderA/FolderB. La carpeta B contiene el archivo .aspx.cs [archivo que contiene el error] y el archivo global.asax. – Vani

1

Su navegador puede almacenar en caché la redirección. intente modificar la URL ligeramente para ser diferente. Como agregar algo después de su URL actual, puede estar seguro de que no está en la memoria caché de su navegador.

O bien, también puedes probar ctrl shift delete en tu navegador para eliminar tu caché.

Si necesita estar seguro de que su asax global está funcionando, puede usar algo como esto en su hadler de eventos dentro del archivo global.asax.

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

Usted debe tratar de dejar caer el PreCompiledApp.config archivo desde la raíz. (al menos temporalmente cambiarle el nombre)

Cuestiones relacionadas