MVC 中的 500 内部服务器错误页面
本文关键字:错误 服务器 内部 中的 MVC | 更新日期: 2023-09-27 18:31:06
我正在尝试为 MVC 站点设置自定义错误。我的 404 页面工作正常,但在测试服务器错误时,我收到默认消息:
抱歉,处理您的请求时出错。
而不是我的自定义页面。
我已经在web.config中设置了这个:
<customErrors mode="On" defaultRedirect="~/Error/500">
<error statusCode="404" redirect="~/Error/404" />
<error statusCode="500" redirect="~/Error/500" />
</customErrors>
我的错误控制器如下:
public class ErrorController : Controller
{
[ActionName("404")]
public ActionResult NotFound()
{
return View();
}
[ActionName("500")]
public ActionResult ServerError()
{
return View();
}
}
我正在通过在我的一个视图中抛出异常来测试500
错误页面:
[ActionName("contact-us")]
public ActionResult ContactUs()
{
throw new DivideByZeroException();
return View();
}
为什么只处理 404 错误?如何显示500
错误的错误页面?
想
通了。.
这是创建项目时留在Global.asax.cs
中的一些样板代码:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
特别:
filters.Add(new HandleErrorAttribute());
这将创建一个新的HandleErrorAttribute
实例,该实例全局应用于我的所有视图。
在没有自定义的情况下,如果视图在使用此属性时引发错误,MVC 将在 Shared
文件夹中显示默认的Error.cshtml
文件,该文件夹是: "Sorry, an error occurred while processing your request."
的来源。
来自 HandleErrorAttribute 的文档:
默认情况下,当具有 HandleErrorAttribute 属性的操作方法引发任何异常时,MVC 将显示位于 ~/Views/Shared 文件夹中的"错误"视图。
注释掉这一行解决了问题,并允许我对 500 个错误使用自定义错误页面。