1. 友好的提示信息:
當網站 運行 出錯時,不能將 原本的異常 信息 直接顯示出來,這樣很不友好,用戶也看不懂;而且,異常信息會顯示出調用堆棧,會影響網站的安全性。
2. 用戶訪問不存在的頁面:
用戶完全可以訪問 根目錄下不存在的頁面。這個時候 就會出現異常。
例子: 360 首頁,如果出現這種情況會重定向到 首頁。而 新浪網會 出現一個 錯誤頁面。
這都是比較好的 處理方法。
3. ASP.NET MVC 如何處理 用戶訪問不存在的頁面:
我們可以在 web.config 裡配置
不過這個頁面只能放在 網站的根目錄下。
我們可以 定義一個 控制器操作(或者是 網站的首頁),當出現 異常時,就導航到這個操作。
使用 上面的做法,我們基本可以處理所有的錯誤信息了。
可以在 以上的基礎上加入 如下操作,進行日志記錄:
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 即可。
對於 要 記錄日志的 異常 才 使用以上兩種方法。