程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ASP.NET MVC 異常處理

ASP.NET MVC 異常處理

編輯:C++入門知識

1. 友好的提示信息:
當網站 運行 出錯時,不能將 原本的異常 信息 直接顯示出來,這樣很不友好,用戶也看不懂;而且,異常信息會顯示出調用堆棧,會影響網站的安全性。

2. 用戶訪問不存在的頁面:
用戶完全可以訪問 根目錄下不存在的頁面。這個時候 就會出現異常。

例子: 360 首頁,如果出現這種情況會重定向到 首頁。而 新浪網會 出現一個 錯誤頁面。

這都是比較好的 處理方法。


3. ASP.NET MVC 如何處理 用戶訪問不存在的頁面:

我們可以在 web.config 裡配置 節,並設置一個默認的 頁面,這樣如果用戶訪問 不存在的頁面(404),就重定向到這個頁面。例如:

    
    
           
    

的 mode 可以 設置 是否處理異常。如果設置為 "RemoteOnly" ,則 在服務器 可以看到出錯的 調用堆棧,而客戶端浏覽器 看到的是 錯誤 頁面。

不過這個頁面只能放在 網站的根目錄下。

我們可以 定義一個 控制器操作(或者是 網站的首頁),當出現 異常時,就導航到這個操作。

    
    
           
    

4. 日志處理:

使用 上面的做法,我們基本可以處理所有的錯誤信息了。 裡可以設置 statusCode, 然後導航到 你自己定義的頁面。但有時候這樣還不能完全滿足需求,比如我們需要 記錄錯誤日志,以方便開發人員 調試修改。

可以在 以上的基礎上加入 如下操作,進行日志記錄:

1. 使用 Filter 標記屬性,我們可以自定義 異常處理類(LogAttribute),派生自 FilterAttribute,IExceptionFilter ,然後 實現 OnException 方法,在 這個方法裡面,將錯誤 信息 寫入數據庫 或者 本地文件。

在 FilterConfig 裡注冊這個 標記屬性 後,就可以 標記 Controller 或 Action。

如:(這裡只是簡單演示)


    string path = AppDomain.CurrentDomain.BaseDirectory + @"/Exception/Log.txt"; //也可以保存到數據庫
    StreamWriter writer = File.AppendText(path);
    writer.Write("\r\n" + filterContext.Exception.Source + ":" + filterContext.Exception.Message);
    writer.Close();    

2. 使用 自定義 Controller, BaseController 派生自 Controller ,並重寫 OnException 方法,在這個方法裡面,將錯誤 信息 寫入數據庫 或者 本地文 件。以後要處理異常的類 就直接 派生自 BaseController 即可。

對於 要 記錄日志的 異常 才 使用以上兩種方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved