發生未處理例外時,導向專用錯誤頁面,並將錯誤詳細資訊以日誌形式每日記錄於伺服器文字檔。
Error 資料夾存放日誌。Web.config。ErrHandler.cs 置於 App_Code。public static void WriteError(string errorMessage) {
try {
string path = "~/Error/" + DateTime.Today.ToString("dd-MM-yy") + ".txt";
string fullPath = System.Web.HttpContext.Current.Server.MapPath(path);
if (!File.Exists(fullPath)) {
File.Create(fullPath).Close();
}
using (StreamWriter w = File.AppendText(fullPath)) {
w.WriteLine("\r\nLog Entry : ");
w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() + ". Error Message: " + errorMessage;
w.WriteLine(err);
w.WriteLine("__________________________");
}
} catch (Exception ex) {
WriteError(ex.Message); // 遞迴記錄寫入失敗錯誤
}
}
Page_Error 事件中呼叫 ErrHandler.WriteError(ex.Message)。Global.asax 的 Application_Error 統一處理。