ASP.net在错误页面上捕获错误

时间:2016-07-21 13:42:38

标签: c# asp.net error-handling webforms http-error

我已经设置了自定义错误页面,可以正常工作:

<customErrors mode="On"  redirectMode="ResponseRewrite">
  <error statusCode="500" redirect="~/Pages/ErrorPages/500.aspx" />
</customErrors>

500.aspx

    Response.ClearContent();
    Response.StatusCode = 500;
    Exception = Server.GetLastError();
    Code.Errors.Error.RecordNewError(ErrorType.InternalException, Exception, Code.Common.GetUserIPAddress().ToString(), HttpContext.Current);
    Server.ClearError();

问题是,如果错误页面本身引发错误,我们会收到一个丑陋的错误:

  

运行时错误

     

描述:处理您的请求时发生异常。   此外,执行自定义时发生另一个异常   第一个异常的错误页面。请求已被终止。

如果错误页面本身引发错误,如何回退到更基本的自定义错误页面?

1 个答案:

答案 0 :(得分:3)

刚刚想出来!在错误页面上使用Page_Error方法:

    private void Page_Error(object sender, EventArgs e)
    {
        Response.ClearContent();
        Response.StatusCode = 500;
        Exception = Server.GetLastError();
        HttpContext.Current.Response.Write("Error");
        HttpContext.Current.Response.End();
    }