在我正在处理的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
。这可能吗?
答案 0 :(得分:0)
啊哈!
找到答案......
MVC使用以下代码添加FilterConfig类。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
只需删除它,错误就消失了!