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

C# “如何替换”;错误。处理您的请求时出错。”;,c#,.net,asp.net-mvc,asp.net-mvc-4,C#,.net,Asp.net Mvc,Asp.net Mvc 4,在我的Web.config中,我有 <customErrors mode="On" defaultRedirect="~/Errors/Unknown"> <error statusCode="403" redirect="~/Errors/Forbidden"></error> <error statusCode="404" redirect="~/Errors/NotFound"></error> </customEr

在我的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

使其工作的步骤:

  • web.config中的customErrors元素现在将被忽略
  • 将下面的方法粘贴到您的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")); 
        }
    }
    

  • 我相信这个问题将有助于回答你的问题。你可能也会发现这个问题很有帮助:实际上,这有助于: