開發網站時,最怕使用者抱怨,怎麼出現一個好奇怪的畫面, 而這個畫面就是程式執行錯誤的頁面,因此統一錯誤管理變成是開發網站一定要規劃設計的一個功能,如果要在統一錯誤處理頁面再去使用MAIL將訊息傳送給管理員,就可以搭配.NET的傳送MAIL機制,以下亞當斯寫一個可以管理網站整體錯誤的實用範例,步驟如下:
1.在Global.asax的Application_Error事件中,使用Server.Transfer將網頁導到統一處理錯誤的頁面GenericErrorPage.aspx:
void Application_Error(object sender, EventArgs e)
{
Server.Transfer("~/GenericErrorPage.aspx");
}
2.在GenericErrorPage.aspx的Page_Load事件中,先判斷Server.GetLastError()不為null代表有錯誤要處理。
//如果有錯誤需要處理的話
if (Server.GetLastError() != null)
{
//……
}
3.使用MAIL來通知管理者錯誤訊息,首先匯入System.Net.Mail命名空間
<%@ Import Namespace="System.Net.Mail" %>
4.建立MailMessage物件
//使用asp.net 傳送MAIL
MailMessage mm = new MailMessage("admin@asp.net",
"adams@uuu.com.tw",
"網站錯誤訊息",
Server.GetLastError().GetBaseException().Message);
5.接著先使用Server.ClearError();將錯誤清除 6.最後再用SmtpClient物件來傳送紀錄錯誤的訊息給管理員。
try
{
//針對已經的錯誤(如:Send Mail)做處理
SmtpClient sc = new SmtpClient("localhost");
sc.Send(mm);
}
catch (Exception ex)
{
Response.Write(ex.Message );
}