在我的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
会在下面记录此错误:
未找到视图“错误”或其主控,或者没有视图引擎支持搜索的位置。搜索了以下位置:
〜/查看/应用/ Error.aspx
〜/查看/应用/ Error.ascx
〜/查看/共享/ Error.aspx
〜/查看/共享/ Error.ascx
〜/查看/应用/ Error.cshtml
〜/查看/应用/ Error.vbhtml
〜/查看/共享/ Error.cshtml
〜/查看/共享/ Error.vbhtml
根本不记录实际错误的异常。
如何避免此错误?
P.S。对于可能会问的任何人,我试图将我的错误页面作为控制器内的视图,但我也无法使用redirectMode="ResponseRewrite"
选项。
答案 0 :(得分:3)
您正试图在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());
}
}