虽然ASP.NET MVC存在错误视图,但无法找到错误页面

时间:2014-11-06 11:10:05

标签: c# asp.net-mvc error-handling custom-error-pages

在我正在处理的ASP.NET MVC Web应用程序中,当应用程序中存在未被捕获的错误时,我正在显示na错误视图。在Web.config中:

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

控制器:

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

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

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

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和相应的视图定义时,为什么应用程序会在这个位置搜索Error文件?为什么在某些情况下会出现第二个错误?在某些情况下会出现这种错误?

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

1 个答案:

答案 0 :(得分:0)

啊哈!

找到答案......

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

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

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