可以';尽管存在“错误”视图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
。这可能吗?
啊哈!
找到了答案。。。
MVC使用以下代码添加FilterConfig类。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
只要删除它,错误就消失了!