在 ASP.NET MVC 项目中启用错误页面时查看未找到错误
View not found error when enabling error pages in ASP.NET MVC project
在我的 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
会在下面记录此错误:
The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/app/Error.aspx
~/Views/app/Error.ascx
~/Views/Shared/Error.aspx
~/Views/Shared/Error.ascx
~/Views/app/Error.cshtml
~/Views/app/Error.vbhtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Error.vbhtml
根本没有记录实际错误的异常。
如何避免这个错误?
P.S。对于可能会问的任何人,我尝试将我的错误页面作为控制器中的视图,但我也无法使用 redirectMode="ResponseRewrite"
选项。
您正试图在 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());
}
}
在我的 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
会在下面记录此错误:
The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/app/Error.aspx
~/Views/app/Error.ascx
~/Views/Shared/Error.aspx
~/Views/Shared/Error.ascx
~/Views/app/Error.cshtml
~/Views/app/Error.vbhtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Error.vbhtml
根本没有记录实际错误的异常。
如何避免这个错误?
P.S。对于可能会问的任何人,我尝试将我的错误页面作为控制器中的视图,但我也无法使用 redirectMode="ResponseRewrite"
选项。
您正试图在 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());
}
}