2010年3月10日 星期三

ASP.Net錯誤訊息導頁

Web開發的系統導入後,有時候還是有可能被「厲害的User」弄出錯誤訊息!
以ASP.Net而言就是經典的黃底紅字啦!所以這時候最好做一下錯誤訊息導頁。

一、Web.config設定:

在Web.config的<system.web>中加入
<customErrors defaultRedirect="GenericErrorPage.aspx" mode="On" />

二、攔截網頁設定:
GenericErrorPage.aspx 裡面我是用DBMail來做通知工具,頁面如下:

<%@ Page Language="C#" %>

<%@ Import Namespace="System.IO" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
if (Server.GetLastError() != null)
{
//使用asp.net 傳送MAIL
//MailMessage mm = new MailMessage("admin@asp.net","signally@yutian.com.tw","DCM網站錯誤訊息",Server.GetLastError().GetBaseException().Message);

string s = "",ShowMsg="",mm;
mm = (Server.GetLastError().GetBaseException().Message).Trim().Replace("'", "#");

//將錯誤清除
Server.ClearError();

//傳送紀錄錯誤的訊息給管理員。
try
{
//針對已經的錯誤(如:Send Mail)做處理
//SmtpClient sc = new SmtpClient("localhost");
//sc.Send(mm);

//改用DB mail
if (File.Exists(Server.MapPath("~/IsRD")))
{
Response.Write(mm);
}
else
{
ShowMsg = "系統忙碌中、或程式暫時無法執行,已通知系統管理員處理,請稍後再試。";
s = "Exec ZSendErrMsg @tp = 1,@em= '',@mm = '" + mm + "'";
Class1.ExecSQL(s);
Response.Write(ShowMsg);
//Server.Transfer("~/ErrorPage.aspx");
}
}
catch (Exception ex)
{
Response.Write(ex.Message );
}

}
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>伺服器忙碌</title>
</head>
<body>
</body>
</html>
三、利用在跟目錄下放一個叫"IsRD的檔案"來區別是否要攔截訊息∼

--
看到、想到、說到、做到 
能夠填平大海的誓言,也比不上邁出一步的價值 
是以吾輩此生,再無任何誓言

沒有留言: