自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

概述ASP.NET錯誤處理

開發(fā) 后端
本文介紹ASP.NET錯誤處理,以及介紹如果您的應用程序試圖登錄數(shù)據(jù)庫時沒有成功,則顯示的錯誤信息不應該包括它正在使用的用戶名。

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

原則(MSDN):在您的應用程序顯示錯誤信息時,它不應該泄露有助于惡意用戶攻擊您系統(tǒng)的信息。例如,如果您的應用程序試圖登錄數(shù)據(jù)庫時沒有成功,則顯示的錯誤信息不應該包括它正在使用的用戶名。

有許多方法可以控制錯誤信息:

將應用程序配置為不向遠程(應用程序)用戶顯示詳細錯誤信息。您也可以選擇將錯誤重定向到應用程序頁。
只要可行就包括ASP.NET錯誤處理,并編寫您自己的錯誤信息。在您的錯誤處理程序中,您可以進行測試以確定用戶是否為本地用戶并作出相應的響應。
在捕捉所有未處理異常并將它們發(fā)送到一般錯誤頁的頁級別或應用程序級別上,創(chuàng)建全局錯誤處理程序。這樣,即使您沒有預料到某個問題,至少用戶不會看到異常頁。

一.頁面級的ASP.NET錯誤處理

  1. voidPage_Error(Objectsender,EventArgse){  
  2. Stringmessage="<fontface=verdanacolor=red>" 
  3. +"<h4>"+Request.Url.ToString()+"</h4>"  
  4. +"<pre><fontcolorfontcolor='red'>"+Server.GetLastError().ToString()+"</pre>"  
  5. +"</font>";  
  6.  
  7. Response.Write(message);  
  8. Server.ClearError();  

注:通過使用 Server 對象訪問來自服務器的錯誤信息。特別地,該示例從 Request 對象獲取請求的 URL,以及 Server 對象的最新錯誤(使用 GetLastError 方法),并將這兩者都轉換為客戶端可以顯示的字符串。將 message 變量寫入客戶端后,通過使用 ClearError 方法刪除該錯誤

二.應用程序級的錯誤事件中

錯誤處理方式如下:global.asax文件中的application_error中添加處理 邏輯,可添加其它操作,如寫入windows事件日志,發(fā)郵件給管理員,將錯誤信息寫入數(shù)據(jù)庫。具體如下:

  1. protectedvoidApplication_Error(Objectsender,EventArgse)  
  2. {  
  3. StringMessage="\n\nURL:\nhttp://localhost/"+Request.Path  
  4. +"\n\nMESSAGE:\n"+Server.GetLastError().Message  
  5. +"\n\nSTACKTRACE:\n"+Server.GetLastError().StackTrace;  
  6. //寫入windows事件日志  
  7. StringLogName="Application";  
  8. if(!EventLog.SourceExists(LogName))  
  9. {  
  10. EventLog.CreateEventSource(LogName,LogName);  
  11. }  
  12. EventLogLog=newEventLog();  
  13. Log.Source=LogName;  
  14. Log.WriteEntry(Message,EventLogEntryType.Error);  

三.web.config中,自定義錯誤信息。將應用程序配置為不向遠程用戶顯示錯誤

  1. <customErrors mode="RemoteOnly" defaultRedirect="AppErrors.aspx">   
  2.    <error statusCode="404" redirect="NoSuchPage.aspx"/>   
  3.    <error statusCode="403" redirect="NoAccessAllowed.aspx"/>   
  4. </customErrors> 


注:將 mode 屬性設置為 RemoteOnly(區(qū)分大小寫)。這就將應用程序配置為僅向本地用戶(您和開發(fā)人員)顯示詳細的錯誤。
(可選)包括指向應用程序錯誤頁的 defaultRedirect 屬性。
(可選)包括將錯誤重定向到特定頁的 error 元素。例如,您可以將標準 404 錯誤(未找到頁)重定向到您自己的應用程序頁。

四.包括ASP.NET錯誤處理 (MSDN)

1.在可能產生錯誤的任何語句前后使用 try-catch-finally 塊。

2.(可選)使用 Context 對象的 UserHostAddress 屬性對本地用戶進行測試并相應地修改錯誤處理。值 127.0.0.1 等效于“l(fā)ocalhost”并指示瀏覽器與 Web 服務器位于同一臺計算機上。

下面顯示的是一個示例錯誤處理塊。如果發(fā)生錯誤,則用有關消息的詳細信息加載 Session 狀態(tài)變量,然后應用程序顯示可以讀取 Session 變量并顯示錯誤的頁。(有意寫入此錯誤以便不向用戶提供任何可利用的詳細信息。)如果用戶是本地用戶,則提供不同的錯誤詳細信息。在 finally 塊中,釋放開放式資源。

  1. try  
  2. {  
  3. sqlConnection1.Open();  
  4. sqlDataAdapter1.Fill(dsCustomers1);  
  5. }  
  6. catch (Exception ex)  
  7. {  
  8. if(HttpContext.Current.Request.UserHostAddress == "127.0.0.1")  
  9. { Session["CurrentError"] = ex.Message; }  
  10. else  
  11. { Session["CurrentError"] = "Error processing page."; }  
  12. Server.Transfer("ApplicationError.aspx");  
  13. }  
  14. finally   
  15. {  
  16. this.sqlConnection1.Close();  

【編輯推薦】

  1. ASP.NET開發(fā)技巧之Theme功能淺析
  2. 詳解ASP.NET動態(tài)編譯
  3. Apache支持ASP.NET方法淺析
  4. 淺談ASP.NET服務器標準控件
  5. ASP.NET中SQL Server數(shù)據(jù)庫備份恢復淺析
責任編輯:佚名 來源: 博客園
相關推薦

2009-06-19 16:20:14

ASP.NET錯誤處理

2009-07-31 11:28:42

錯誤處理機制ASP.NET

2009-07-31 14:49:22

asp.net自定義錯

2009-07-28 17:17:19

ASP.NET概述

2024-09-24 17:34:05

2009-07-22 17:45:35

ASP.NET教程

2009-07-27 15:52:21

ASP.NET特點ASP.NET概述

2009-07-29 13:04:59

2009-08-05 13:58:26

ASP.NET Mem

2009-07-22 16:17:39

ASP.NET AJA

2009-07-23 16:55:55

ASP.NET特點

2009-08-05 17:54:04

ASP.NET運行模式

2009-07-22 10:09:59

ASP.NET MVC

2009-07-28 11:09:02

ASP.NET狀態(tài)類型

2009-07-30 15:17:16

ASP.NET 2.0

2009-07-20 10:16:13

配置ASP.NET A

2009-08-04 15:22:33

ASP.NET緩存機制

2009-08-04 16:46:58

ASP.NET內置Ht

2009-07-22 15:58:52

ASP.NET AJA

2009-07-23 10:52:38

點贊
收藏

51CTO技術棧公眾號