新聞中心
要創(chuàng)建頁中的全局處理程序,請創(chuàng)建 Page_Error 事件的處理程序。要創(chuàng)建ASP.NET應用程序范圍的錯誤處理程序,請在 Global.asax 文件中將代碼添加到 Application_Error 方法。只要您的頁或應用程序中發(fā)生未處理的異常,就會調(diào)用這些方法。您可以從 HttpServerUtility.GetLastError 方法獲取有關(guān)最新錯誤的信息。
注意 如果您具有全局錯誤處理程序,則它優(yōu)先于在 Web.config customErrors 元素的 defaultRedirect 屬性中指定的ASP.NET錯誤處理。

成都創(chuàng)新互聯(lián)是專業(yè)的倉山網(wǎng)站建設公司,倉山接單;提供網(wǎng)站設計制作、網(wǎng)站設計,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行倉山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
原則(MSDN):在您的應用程序顯示錯誤信息時,它不應該泄露有助于惡意用戶攻擊您系統(tǒng)的信息。例如,如果您的應用程序試圖登錄數(shù)據(jù)庫時沒有成功,則顯示的錯誤信息不應該包括它正在使用的用戶名。
有許多方法可以控制錯誤信息:
將應用程序配置為不向遠程(應用程序)用戶顯示詳細錯誤信息。您也可以選擇將錯誤重定向到應用程序頁。
只要可行就包括ASP.NET錯誤處理,并編寫您自己的錯誤信息。在您的錯誤處理程序中,您可以進行測試以確定用戶是否為本地用戶并作出相應的響應。
在捕捉所有未處理異常并將它們發(fā)送到一般錯誤頁的頁級別或應用程序級別上,創(chuàng)建全局錯誤處理程序。這樣,即使您沒有預料到某個問題,至少用戶不會看到異常頁。
一.頁面級的ASP.NET錯誤處理
"
- voidPage_Error(Objectsender,EventArgse){
- Stringmessage="
" - +""+Request.Url.ToString()+""
- +"
<fontcolorfontcolor='red'>"+Server.GetLastError().ToString()+"
注:通過使用 Server 對象訪問來自服務器的錯誤信息。特別地,該示例從 Request 對象獲取請求的 URL,以及 Server 對象的最新錯誤(使用 GetLastError 方法),并將這兩者都轉(zhuǎn)換為客戶端可以顯示的字符串。將 message 變量寫入客戶端后,通過使用 ClearError 方法刪除該錯誤
二.應用程序級的錯誤事件中
錯誤處理方式如下:global.asax文件中的application_error中添加處理 邏輯,可添加其它操作,如寫入windows事件日志,發(fā)郵件給管理員,將錯誤信息寫入數(shù)據(jù)庫。具體如下:
- protectedvoidApplication_Error(Objectsender,EventArgse)
- {
- StringMessage="\n\nURL:\nhttp://localhost/"+Request.Path
- +"\n\nMESSAGE:\n"+Server.GetLastError().Message
- +"\n\nSTACKTRACE:\n"+Server.GetLastError().StackTrace;
- //寫入windows事件日志
- StringLogName="Application";
- if(!EventLog.SourceExists(LogName))
- {
- EventLog.CreateEventSource(LogName,LogName);
- }
- EventLogLog=newEventLog();
- Log.Source=LogName;
- Log.WriteEntry(Message,EventLogEntryType.Error);
- }
三.web.config中,自定義錯誤信息。將應用程序配置為不向遠程用戶顯示錯誤
mode="RemoteOnly" defaultRedirect="AppErrors.aspx"> statusCode="404" redirect="NoSuchPage.aspx"/> statusCode="403" redirect="NoAccessAllowed.aspx"/>
注:將 mode 屬性設置為 RemoteOnly(區(qū)分大小寫)。這就將應用程序配置為僅向本地用戶(您和開發(fā)人員)顯示詳細的錯誤。
(可選)包括指向應用程序錯誤頁的 defaultRedirect 屬性。
(可選)包括將錯誤重定向到特定頁的 error 元素。例如,您可以將標準 404 錯誤(未找到頁)重定向到您自己的應用程序頁。
四.包括ASP.NET錯誤處理 (MSDN)
1.在可能產(chǎn)生錯誤的任何語句前后使用 try-catch-finally 塊。
2.(可選)使用 Context 對象的 UserHostAddress 屬性對本地用戶進行測試并相應地修改錯誤處理。值 127.0.0.1 等效于“l(fā)ocalhost”并指示瀏覽器與 Web 服務器位于同一臺計算機上。
下面顯示的是一個示例錯誤處理塊。如果發(fā)生錯誤,則用有關(guān)消息的詳細信息加載 Session 狀態(tài)變量,然后應用程序顯示可以讀取 Session 變量并顯示錯誤的頁。(有意寫入此錯誤以便不向用戶提供任何可利用的詳細信息。)如果用戶是本地用戶,則提供不同的錯誤詳細信息。在 finally 塊中,釋放開放式資源。
- try
- {
- sqlConnection1.Open();
- sqlDataAdapter1.Fill(dsCustomers1);
- }
- catch (Exception ex)
- {
- if(HttpContext.Current.Request.UserHostAddress == "127.0.0.1")
- { Session["CurrentError"] = ex.Message; }
- else
- { Session["CurrentError"] = "Error processing page."; }
- Server.Transfer("ApplicationError.aspx");
- }
- finally
- {
- this.sqlConnection1.Close();
- }
本文名稱:概述ASP.NET錯誤處理
網(wǎng)頁地址:http://m.fisionsoft.com.cn/article/dhohsdj.html


咨詢
建站咨詢
