这里的场景是我有很多.aspx pages
如果有任何页面出错,它会重定向到错误页面
Web.config
:
<customErrors mode="On" defaultRedirect="customErrorPage.aspx">
<error statusCode="404" redirect="Error404.aspx" />
</customErrors>
如果我收到404错误,则会重定向到Error404.aspx
。
但如果他们的任何其他错误(禁止,连接丢失,服务不可用等)那么我想重定向到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("abc@asa.com", "Error Log", "custom error", true);
}
还告诉我他们是否还有其他好方法
答案 0 :(得分: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("example@gmail.com", "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");
}
答案 1 :(得分:0)
我建议使用ELMAH - 它是专门用于记录未处理的异常(并且可以发信号以捕获其他异常)。
针对不同的配置有一些不同的nuGet包,包括通过电子邮件发送异常详细信息。
它以非常易读的方式捕获大量数据并对其进行格式化。