如何替换“;错误处理您的请求时出错&”;

本文关键字:请求 出错 处理 错误 何替换 替换 | 更新日期: 2023-09-27 18:25:20

在我的Web.config中。

<customErrors mode="On" defaultRedirect="~/Errors/Unknown">
  <error statusCode="403" redirect="~/Errors/Forbidden"></error>
  <error statusCode="404" redirect="~/Errors/NotFound"></error>
</customErrors>

如果我试图打开一个不存在的页面,效果会很好。(它重定向到我的自定义错误页面:ErrorsController.NotFound)。当发生未处理的异常时(在本例中为LINQ Signle(…))。它不会转到~/Errors/Unknown,但显示默认消息:

错误。处理您的请求时出错。

如何用我的ErrorsController替换它。未知?

如何替换“;错误处理您的请求时出错&”;

多亏了这个问题,我明白了如何做到这一点。下面的代码与已接受的答案几乎相同。修改也不处理HttpException。

使其发挥作用的步骤:

  1. web.config中的customErrors元素现在将被忽略
  2. 将以下方法粘贴到您的Global.axax.

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();
        Response.Clear();
        var httpException = exception as HttpException;
        if (httpException != null)
        {
            string action;
            switch (httpException.GetHttpCode())
            {
                case 404:
                    // page not found
                    action = "NotFound";
                    break;
                case 403:
                    // forbidden
                    action = "Forbidden";
                    break;
                case 500:
                    // server error
                    action = "HttpError500";
                    break;
                default:
                    action = "Unknown";
                    break;
            }
            // clear error on server
            Server.ClearError();
            Response.Redirect(String.Format("~/Errors/{0}", action));
        }else
        {
            // this is my modification, which handles any type of an exception.
            Response.Redirect(String.Format("~/Errors/Unknown")); 
        }
    }