2012-07-11 16 views
6

Używamy niestandardowego błędu dostarczonego przez konfigurację asp.net. W całej aplikacji (PL/BLL/DAL) nie używamy żadnego próbnego połowu. Tak więc dla każdego wyjątku w dowolnej aplikacji warstwy przekierowuj użytkownika do niestandardowej strony błędu ustawionej w niestandardowym ustawieniu błędu w pliku konfiguracyjnym. Teraz chcemy zalogować się następujące informacje w pliku dziennika przed pokazaniem stronę błędu:Asp.net 4.0: Jak uzyskać szczegółowe informacje o wyjątku na stronie błędów niestandardowych?

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

Proszę mi pomóc jak zbierać powyżej informacji w przypadku niestandardowych błąd page_load ??

Dzięki,

@Paul

Odpowiedz

11

Można przechowywać dane o błędach w sesji i uzyskać je w niestandardowej strony błędu.

Ten kod jest w 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 
    } 

Następnie na stronie błędu obciążenie:

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

Ustaw ten atrybut w sekcji CustomErrors w web.config: redirectMode = "ResponseRewrite"