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

View not found error when enabling error pages in ASP.NET MVC project

在我的 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 会在下面记录此错误:

The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/app/Error.aspx
~/Views/app/Error.ascx
~/Views/Shared/Error.aspx
~/Views/Shared/Error.ascx
~/Views/app/Error.cshtml
~/Views/app/Error.vbhtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Error.vbhtml

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

如何避免这个错误?

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

您正试图在 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());
    }
}