[ZT]ASP.NET利用Global.asax的Application_Error來記錄Exception訊息

本文介绍了ASP.NET中三种记录网页异常信息的方法:写入事件查看器、保存到文本文件及通过电子邮件发送。提供了Global.asax文件的具体实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

記錄網頁Exception訊息的方法有很多種..在此介紹三種儲存方式..

1.記錄在事件檢視器

2.記錄在文字檔

3.用Email寄出訊息

asp.net(c#)

Global.asax

 

  1. <%@ Application Language="C#" %>   
  2.   
  3. <script RunAt="server">   
  4.   
  5.     void Application_Start(object sender, EventArgs e)   
  6.     {   
  7.         // 應用程式啟動時執行的程式碼   
  8.   
  9.     }   
  10.   
  11.     void Application_End(object sender, EventArgs e)   
  12.     {   
  13.         //  應用程式關閉時執行的程式碼   
  14.   
  15.     }   
  16.   
  17.     void Application_Error(object sender, EventArgs e)   
  18.     {   
  19.         string Message = "";   
  20.         Exception ex = Server.GetLastError();   
  21.         Message = "發生錯誤的網頁:{0}錯誤訊息:{1}堆疊內容:{2}";   
  22.         Message = String.Format(Message, Request.Path + Environment.NewLine, ex.GetBaseException().Message + Environment.NewLine, Environment.NewLine + ex.StackTrace);   
  23.   
  24.         //寫入事件撿視器,方法一   
  25.         System.Diagnostics.EventLog.WriteEntry("WebAppError", Message, System.Diagnostics.EventLogEntryType.Error);   
  26.   
  27.         //寫入文字檔,方法二   
  28.         System.IO.File.AppendAllText(Server.MapPath(string.Format("Log\\{0}.txt", DateTime.Now.Ticks.ToString())), Message);   
  29.   
  30.         //寄出Email,方法三   
  31.         //此方法請參考System.Net.Mail.MailMessage   
  32.   
  33.         //清除Error   
  34.         Server.ClearError();   
  35.   
  36.         Response.Write("系統錯誤,請聯絡系統管理員!!");   
  37.   
  38.     }   
  39.   
  40.     void Session_Start(object sender, EventArgs e)   
  41.     {   
  42.         // 啟動新工作階段時執行的程式碼   
  43.   
  44.     }   
  45.   
  46.     void Session_End(object sender, EventArgs e)   
  47.     {   
  48.         // 工作階段結束時執行的程式碼。    
  49.         // 注意: 只有在 Web.config 檔將 sessionstate 模式設定為 InProc 時,   
  50.         // 才會引發 Session_End 事件。如果將工作階段模式設定為 StateServer    
  51.         // 或 SQLServer,就不會引發這個事件。   
  52.   
  53.     }   
  54.           
  55. </script>  
<%@ Application Language="C#" %> <script RunAt="server"> void Application_Start(object sender, EventArgs e) { // 應用程式啟動時執行的程式碼 } void Application_End(object sender, EventArgs e) { // 應用程式關閉時執行的程式碼 } void Application_Error(object sender, EventArgs e) { string Message = ""; Exception ex = Server.GetLastError(); Message = "發生錯誤的網頁:{0}錯誤訊息:{1}堆疊內容:{2}"; Message = String.Format(Message, Request.Path + Environment.NewLine, ex.GetBaseException().Message + Environment.NewLine, Environment.NewLine + ex.StackTrace); //寫入事件撿視器,方法一 System.Diagnostics.EventLog.WriteEntry("WebAppError", Message, System.Diagnostics.EventLogEntryType.Error); //寫入文字檔,方法二 System.IO.File.AppendAllText(Server.MapPath(string.Format("Log\\{0}.txt", DateTime.Now.Ticks.ToString())), Message); //寄出Email,方法三 //此方法請參考System.Net.Mail.MailMessage //清除Error Server.ClearError(); Response.Write("系統錯誤,請聯絡系統管理員!!"); } void Session_Start(object sender, EventArgs e) { // 啟動新工作階段時執行的程式碼 } void Session_End(object sender, EventArgs e) { // 工作階段結束時執行的程式碼。 // 注意: 只有在 Web.config 檔將 sessionstate 模式設定為 InProc 時, // 才會引發 Session_End 事件。如果將工作階段模式設定為 StateServer // 或 SQLServer,就不會引發這個事件。 } </script>
 

 

測試網頁,產生一個Null Exception

  1. protected void Page_Load(object sender, EventArgs e)   
  2. {   
  3.     throw (new ArgumentNullException());   
  4. }  
protected void Page_Load(object sender, EventArgs e) { throw (new ArgumentNullException()); }

 

執行結果:

事件檢視器

文字檔

參考網址:

http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080822113331G86&fumcde=FUM20041006161839LRJ
http://support.microsoft.com/kb/306355/zh-tw

 

 

引用URL

http://www.dotblogs.com.tw/puma/archive/2008/08/31/5260.aspx   複製網址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值