2012-07-11 15 views
6

Estamos utilizando un error personalizado proporcionado por la configuración de configuración asp.net. En toda la aplicación (PL/BLL/DAL), no estamos utilizando ningún try catch. Por lo tanto, para cualquier excepción en cualquier aplicación de capa, redirija al usuario a la página de error personalizada establecida en la configuración de error personalizada en el archivo de configuración. Ahora queremos iniciar la sesión siguiente información en el archivo de registro antes de mostrar la página de error:Asp.net 4.0: ¿Cómo obtener detalles de la excepción en la página de error personalizada?

- Date & time 
- Exception message & strack trace. 
- Page Name 
- Method Name 
- Method Parameter & values. 

Por favor, ayúdame cómo recoger la información anterior en caso de error Page_Load encargo ??

Gracias,

@ Pablo

Respuesta

11

Puede almacenar los detalles del error en la sesión y obtener en la página de error personalizada.

Este es el código de Global.asax:

protected void Application_Error(object sender, EventArgs e) 
    { 
     Exception err = Server.GetLastError(); 
     Session.Add("LastError", err); 
    } 

    void Session_Start(object sender, EventArgs e) 
    {  
     Session["LastError"] = ""; //initialize the session 
    } 

Luego, en su página de error carga:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Exception err = Session["LastError"] as Exception; 
     //Exception err = Server.GetLastError(); 
     if (err != null) 
     { 
      err = err.GetBaseException(); 
      lblErrorMsg.Text = err.Message; 
      lblSource.Text = err.Source; 
      lblInnerEx.Text = (err.InnerException != null) ? err.InnerException.ToString() : ""; 
      lblStackTrace.Text = err.StackTrace; 
      Session["LastError"] = null; 
     } 
    } 
0

Establecer este atributo en la sección customErrors en web.config: redirectMode = "ResponseRewrite"

Cuestiones relacionadas