2012-08-28 41 views
0

我試圖用扭曲創建自己的自定義錯誤頁面。 (沒有原創)基本上,當自定義錯誤頁面被擊中時,它將採取錯誤的網址,並且用戶的用戶名登錄並向我發送一封簡短的smtp電子郵件。它實際上工作的很好,但它在瘋狂的時間在我測試的頁面上發送這些電子郵件,並且我沒有發現任何錯誤。我想嘗試獲取一些關於爲什麼這個自定義錯誤頁面被調用的信息,所以我可以嘗試修復這個問題。試圖創建自定義錯誤警報

會有人有任何建議,所以我可以加強這個網頁給我更多的信息。

protected void Page_Load(object sender, EventArgs e) 
    { 
     string url = HttpContext.Current.Request.Url.AbsoluteUri; 
     string DATETIME = DateTime.Now.ToString(); 
     string UserName = HttpContext.Current.User.Identity.Name.ToString(); 

     string fileName = Server.MapPath("_TextFiles/error.txt"); 
     string mailBody = File.ReadAllText(fileName); 

     mailBody = mailBody.Replace("##url##", url); 
     mailBody = mailBody.Replace("##DATETIME##", DATETIME); 
     mailBody = mailBody.Replace("##UserName##", UserName); 

     MailMessage myMessage = new MailMessage(); 
     myMessage.Subject = "Response from "; 
     myMessage.Body = mailBody; 

     myMessage.From = new MailAddress("*******n.com", "******"); 
     myMessage.To.Add(new MailAddress("*********.com", "******")); 

     SmtpClient mySmtpClient = new SmtpClient(); 
     mySmtpClient.Send(myMessage); 

    } 

Text文件讓您不會感到困惑。

Hello, 

Response from Error.aspx 


An error occured on page ##url## 

at ##DATETIME## 


Username: ##UserName## 
+0

爲什麼不添加錯誤信息呢?那麼你至少會知道什麼是跳閘。 – Brian

+0

這就是我想要做的,但我可能解釋得很差。 – jackncoke

+0

你如何將消息傳遞給你的電子郵件過程? – Brian

回答

2

我與我的網站具有相同的基本設置,但您需要稍微更改您的方法。如果您從錯誤頁面發送電子郵件,則該例外不再可用。這是我做的......

我延長System.Web.UI.Page類和具有下列覆蓋OnError方法:

protected override void OnError(EventArgs e) 
{ 
    base.OnError(e); 

    System.Exception ex = Server.GetLastError(); 
    Log.LogError("Error in Supr.CMS.Types.SuprPage", ex, Log.LogLevel.HandledExceptionFatal); 
} 

我現在用這個作爲所有網頁我的基類,我通知所有錯誤與完整的細節。我包含異常消息和堆棧跟蹤以及一些用戶信息(包括IP地址和UserAgent),Cookie集合,會話集合,表單集合和緩存集合,以便儘可能地瞭解用戶遇到錯誤時網站的狀態(這裏有點太多了)。

另一個說明...很多錯誤都是由機器人生成的,並且像IP和UserAgent這樣的信息可以讓我打破這種情況並增強我的請求阻止。