可以';尽管存在“错误”视图ASP.NET MVC,但找不到“错误”页面

本文关键字:错误 MVC NET 页面 找不到 ASP 视图 存在 可以 | 更新日期: 2023-09-27 18:29:34

在我正在开发的ASP.NET MVC web应用程序中,当应用程序中存在未捕获的错误时,我会显示naError视图。在Web.config中:

<customErrors mode="On" defaultRedirect="~/Error" />

控制器:

 public class ErrorController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }
}

我在文件夹Views/Error,Index.chtml中有一个视图。它的内容对于我面临的问题来说并不重要。

例如,当出现错误404时,一切正常-显示错误索引.cshtml页面(URL为http://localhost:51099/Error?aspxerrorpath=/Home/ssad,这是正常的),并在应用程序的错误日志中报告404错误。但是,当出现其他错误时,例如,当我试图通过应用程序在不存在的文件夹中创建文件时,会显示error Index.chtml视图(URL为http://localhost:51099/Error?aspxerrorpath=/AdminDataExport/ResponseMatrix,可以),但报告了两个错误-一个是找不到文件夹,可以,另一个是:

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

当我定义了ErrorController和相应的视图时,为什么应用程序要在这个位置搜索错误文件?为什么这第二个错误在某些情况下会出现,而在有些情况下不会出现?

我想修复第二个错误。我尝试在Views/Shared中添加一个Error.cshtml文件来修复它。结果是,第二个错误没有被记录,这正是我想要的,但URL与第一个错误不同——http://localhost:51099/AdminDataExport/ResponseMatrix,我希望它是http://localhost:51099/Error?aspxerrorpath=/AdminDataExport/ResponseMatrix。这可能吗?

可以';尽管存在“错误”视图ASP.NET MVC,但找不到“错误”页面

啊哈!

找到了答案。。。

MVC使用以下代码添加FilterConfig类。

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

只要删除它,错误就消失了!