2012-08-04 21 views
1

這裏的情況是我有很多.aspx pages如果有任何頁給出了錯誤,它會重定向到一個錯誤頁面如何發送錯誤信息的郵件,如果在Web應用程序中出現的任何錯誤

Web.config

<customErrors mode="On" defaultRedirect="customErrorPage.aspx"> 
     <error statusCode="404" redirect="Error404.aspx" /> 
</customErrors> 

如果我得到404錯誤,它會重定向到Error404.aspx工作正常。

但是,如果他們的任何其他錯誤(禁止,connectionlost,服務不可用等)然後我想重定向到customErrorPage.apsx

我想在顯示自定義錯誤頁面時發送帶有錯誤信息(錯誤頁面名稱,錯誤狀態碼)的電子郵件,稍後幾分鐘後它會自動將用戶重定向到login.aspx

我已經試過(不工作)

void Application_Error(object sender, EventArgs e) 
{ 
     ex = (HttpException)Server.GetLastError(); 
     int errorcode = ex.GetHttpCode(); 
    // Response.Redirect("Errorpage.aspx?id='" + errorcode + "'&msg='" + message + "'"); 
} 

我的自定義錯誤頁

protected void Page_Load(object sender, EventArgs e) 
{ 
     getUrl = HttpContext.Current.Request.Url.ToString(); 
     // string error= HttpContext.Current.Error.ToString(); 
     // HtmlMeta meta = new HtmlMeta(); 
     // HtmlHead head = (HtmlHead)Page.Header; 
     // meta.HttpEquiv = "refresh"; 
     // meta.Content = "10; url=Login.aspx"; 
     // head.Controls.Add(meta); 
} 

protected void Page_UnLoad(object sender, EventArgs e) 
{ 
     //send mail function 
     Email.Send("[email protected]", "Error Log", "custom error", true); 
} 

也讓我知道,如果他們是這個

回答

3

在這裏,我是如何解決:

Globasl.asax:

void Application_Error(object sender, EventArgs e) 
    { 
     Exception objErr = Server.GetLastError().GetBaseException(); 
     string err = "<br><b>Error in: </b>" + Request.Url.ToString() + 
      "<br><b>Error Message: </b>" + objErr.Message.ToString() + 
      "<br><b>Stack Trace:</b><br>" + objErr.StackTrace.ToString(); 
     //Email sending method 
     Email.Send("[email protected]", "Error", err, true); 
    } 

Web.config文件:

<customErrors mode="Off" defaultRedirect="Customerrorpage.aspx"> 
     <error statusCode="404" redirect="Error404.aspx" /> 
</customErrors> 

Customerrorpage.aspx:(自動重定向到登錄頁面在幾秒鐘內)

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.AppendHeader("Refresh", "4; url=Login.aspx"); 
    } 
0

任何其他的好辦法,我建議使用ELMAH爲此 - 它的目的是爲記錄未處理的異常而構建(並且可以通過信號發送來捕獲其他異常)。

對於不同的配置,有幾種不同的nuGet軟件包,包括通過電子郵件發送異常詳細信息。

它捕獲大量數據並以非常可讀的方式對其進行格式化。

+0

你能給我提供一些有用的鏈接嗎? – 2012-08-04 10:50:36

+0

@satindersingh - 我已經做到了。 – Oded 2012-08-04 11:10:35

相關問題