2012-04-08 19 views
12

Tengo el siguiente en mi Global.aspx que está destinado para el manejo de errores:errores Catching en Global.asax

void Application_Error(object sender, EventArgs e) 
{ 
    Exception exception = Server.GetLastError(); 
    if (exception != null) 
    { 
     //Log 
     if (HttpContext.Current.Server != null) 
     { 
      HttpContext.Current.Server.Transfer("/siteerror.aspx"); 
     } 
    } 
} 

Esto funciona en su mayor parte, pero a veces no se meta en Server.Transfer. Por algún motivo, HttpContext.Current.Server es nulo. Descubrí dónde sucede esto: cuando ocurren errores en un control de usuario y en mis clases de lógica de negocios. ¿Me estoy perdiendo de algo?

Gracias

+2

algún motivo no usar 'Response.Redirect' más bien? – leppie

+1

¿Dónde en global.asax es esto? –

+0

@leppie No añadí esto, por lo que no estoy del todo seguro de por qué la persona anterior eligió Server.Transfer, pero no debería marcar la diferencia, ¿verdad? – Peuge

Respuesta

1

Errores de aplicación pueden ocurrir en cualquier momento - incluyendo cuando no hay conexión está presente.

Por ejemplo, si un subproceso en segundo plano se está procesando y provoca una excepción.

2

Application_Error block puede detectar excepciones en cualquier momento entre el ciclo de vida de la aplicación.

El ciclo de vida de la aplicación es principal del ciclo de vida de la sesión, ya que puede comprender que puede haber muchas sesiones en una sola aplicación.

Por lo tanto, puede tener HttpContext.Current null en ciertos errores ocurridos antes de crear la sesión o después de la expiración de las sesiones.

Si desea escribir redirecciones de error específicas de sesión, debe comprobar siempre Null de HttpContext actual.

También puede utilizar Server.GetLastError a conocer los detalles de los errores se produjeron y escribir su página de error redirigir a través de la etiqueta CustomError en web.config

Véase el siguiente enlace

http://weblogs.asp.net/scottgu/archive/2006/08/12/Tip_2F00_Trick_3A00_-Show-Detailed-Error-Messages-to-Developers.aspx