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