ASP.NET項目開發中應用程序異常處理淺析
ASP.NET項目開發中應用程序異常處理都有哪些問題呢?讓我們開始我們的講解:
相信大家對Application對象不陌生,而且在項目中添加過Global.asax文件。確實,ASP.NET在應用程序級別處理異常的代碼都是放在Global.asax的Application_Error事件處理下的:
- void Application_Error(object sender, EventArgs e)
- {
- // Code that runs when an unhandled error occurs
- }
我們可以在上面的事件處理的方法中捕獲所有的異常,而且還可以把異常記錄到日志文件,并且同時發送Email告訴開發人員出現了什么問題,如下
ASP.NET項目開發中應用程序異常處理Code
- Exception error = Server.GetLastError().GetBaseException();
- //在事件日志中記錄異常
- if (!EventLog.SourceExists("ApplicationException"))
- {
- EventLog.CreateEventSource("ApplicationException", "Application");
- }
- EventLog eventLog = new EventLog();
- eventLog.Log = "Application";
- eventLog.Source = "ApplicationException";
- eventLog.WriteEntry(error.ToString(), EventLogEntryType.Error);
- //發送Email給開發人員
- MailMessage email = new MailMessage("administrator@xiaoyang.com",
- "vince.varallo@PoweredByV2.com");
- email.Body = error.ToString();
- email.Subject = "An error occurred in the Application";
- SmtpClient smtpClient = new SmtpClient("127.0.0.1", 25);
- smtpClient.Send(email);
- Response.Redirect("ErrorPage.aspx");
當然,上面的代碼要正確的運行,我們海必須在Global.asax中加入相應的命名空間,而且在發送郵件的時候,上面的"127.0.0.1"要換為我們自己的郵件服務器的地址:
- <%@ Import Namespace="System.Diagnostics" %>
- <%@ Import Namespace="System.Net.Mail" %>
還有一點要注意的就是,ASP.NET運行時是以ASPNET賬戶運行的,這個賬戶的權限是有限的,如果我們想要使得上面的代碼可以運行,那么就必須要給ASPNET賬戶訪問注冊表的權限。如果你不給權限,那么上面的代碼就報錯。
我們賦予ASPNET賬戶訪問在"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog"節點以及字節點的權限。
ASP.NET項目開發中應用程序異常處理之如何配置權限:
1.打開"運行"菜單
2.輸入"regedit",然后確定
3.導航到"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog"節點。
4.右擊這個節點,并且選擇"權限",此時就會彈出權限配置的窗口。
5.點擊"添加",在彈出的窗口中點擊"高級",之后再點擊"查找",***在下面的窗口找到"ASPNET"賬戶,確定。
6.***給予ASPNET賬戶讀的權限就OK了。
上面的代碼,如果我們不在***加了Response.Redirect方法,出錯后,用戶看到的就是那個很經典的黃顏色的報錯的頁面。我們也知道,那個經典的報錯頁面會暴露很多的信息,所以我們常常導航到我們自定義的錯誤頁面。
ASP.NET項目開發中應用程序異常處理的基本情況就向你介紹到這里,希望對你理解ASP.NET項目開發中應用程序異常處理有所幫助。
【編輯推薦】