1

这里的场景是我有很多.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);
}

也让我知道他们是否有其他好的方法

4

2 回答 2

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);
    }

网络配置:

<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");
    }
于 2012-08-29T10:24:56.920 回答
0

我建议为此使用ELMAH - 它是专门为记录未处理的异常而构建的(并且可以发出信号以捕获其他异常)。

对于不同的配置,有几个不同的 nuGet 包,包括通过电子邮件发送异常详细信息。

它捕获大量数据并以非常易读的方式对其进行格式化。

于 2012-08-04T10:46:57.780 回答