2011-08-19 74 views
1

冒泡完整的堆棧跟蹤誤差,我實現自定義的頁面,我現在不工作像我想的那樣。我如何修復下面的代碼來冒泡完整的堆棧跟蹤?從Global.asax中

我使用的Application_Error。

謝謝!

EventLog eventLog = new EventLog(); 

      //Write an error to event log 
      eventLog.LogException(
       String.Format("UNHANDLED EXCEPTION\nPage: {0}", ((Global)(sender)).Context.Request.Path), 
       ex); 

      HttpContext httpContext = HttpContext.Current; 

      // Exception exception = httpContext.Server.GetLastError(); 

      //build out custom formatted error page 
      string strError = "<html>" + 
       "<head runat='server'>" + 
       "<title>Support Error Page</title>" + 
       "<link href='Styles/errorPage.css' rel='stylesheet' type='text/css' media='screen' />" + 
       "<script src='js/jquery.min.js' type='text/javascript'></script>" + 
       "<script src='js/expand.js' type='text/javascript'></script>" + 
       "<script type='text/javascript'>" + 
        "$(function() {" + 
         "$('#outer h2.expand').toggler({method: 'slideFadeToggle'});" + 
        "});" + 
       "</script>" + 
       "</head>" + 
       "<body>" + 
        "<form id='form1' runat='server'>" +      
          "<div id='wrapper'> " + 
           "<div id='content'>" + 
            "<h1 class='heading'>An error occurred processing this request</h1>" + 
             "<div id='outer'>" + 
             "<h2 class='expand'>Click here to expand/collapse the error</h2>" + 
             "<div class='collapse'>" + 
              "<p><b>Error occurred in page: </b>" + httpContext.Server.GetLastError().Source.ToString() + "</p>" + 
              "<p><b>Error Message: </b>" + httpContext.Server.GetLastError().Message.ToString() + "</p>" + 
              "<p><b>Stack Trace: </b>" + httpContext.Server.GetLastError().StackTrace.ToString() + "</p>" + 
             "</div>" + 
             "</div>" + 
            "</div>" + 
           "</div>" +        
        "</form>" + 
        "</body>" + 
        "</html>"; 

      httpContext.Response.Write(strError); 

      // clear the error 
      httpContext.Server.ClearError(); 
     } 
    } 
+2

爲什麼?有什麼問題? – SLaks

回答

0

如果你的意思是顯示在你的HTML渲染完整的堆棧跟蹤,它可以依靠的例外是如何捕獲你的應用程序中拋出。如果發生異常,你在你的應用程序的其他地方處理,如果在這些情況下,你抓住他們,然後拋出一個新的異常,使用httpContext.Server.GetLastError()的InnerException的可能是讓較低級別的堆棧跟蹤有用。

當你趕上並重新拋出異常,如果你建立一個新的異常情況,並通過捕獲異常到新實例的構造函數,你必須在你的全局錯誤處理程序可用的情況下。

請參閱http://msdn.microsoft.com/en-us/library/system.exception.innerexception.aspx