在ASP.NET MVC项目中启用错误页面时查看未找到错误

时间:2015-07-27 17:18:17

标签: asp.net asp.net-mvc error-handling web-config custom-error-pages

在我的ASP.NET MVC项目中,我将/errors/error.html页面作为常规错误页面,使用第二个/errors/error404.aspx来处理404错误。

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/errors/error.html">
    <error statusCode="404" redirect="/errors/error404.aspx" />
</customErrors>

此外,我在Global.asax文件中有一个通用处理程序,它记录所有未捕获的异常以进行日志记录。

public void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
    Common.Core.LogError(ex); // Saving exception details in the database
}

上述设置效果很好,除非我遇到一般错误(例如500错误),Application_Error会在下面记录此错误:

  

未找到视图“错误”或其主控,或者没有视图引擎支持搜索的位置。搜索了以下位置:
  〜/查看/应用/ Error.aspx
  〜/查看/应用/ Error.ascx
  〜/查看/共享/ Error.aspx
  〜/查看/共享/ Error.ascx
  〜/查看/应用/ Error.cshtml
  〜/查看/应用/ Error.vbhtml
  〜/查看/共享/ Error.cshtml
  〜/查看/共享/ Error.vbhtml

根本不记录实际错误的异常。

如何避免此错误?

P.S。对于可能会问的任何人,我试图将我的错误页面作为控制器内的视图,但我也无法使用redirectMode="ResponseRewrite"选项。

1 个答案:

答案 0 :(得分:3)

您正试图在ASP.NET MVC项目中以非ASP.NET MVC方式处理错误。要解决您的问题,您可以在FilterConfig.cs文件中注释行filters.Add(new HandleErrorAttribute());。请参阅下面的代码段。

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        //filters.Add(new HandleErrorAttribute());
    }
}