DGi*_*bbs 10 c# error-handling custom-errors asp.net-mvc-3
我正在尝试为MVC站点设置自定义错误.我有404页面工作正常,但在测试服务器错误时,我得到默认消息:
很抱歉,在执行您的要求时发生了一个错误.
而不是我的自定义页面.
我在web.config中设置了这个:
<customErrors mode="On" defaultRedirect="~/Error/500">
<error statusCode="404" redirect="~/Error/404" />
<error statusCode="500" redirect="~/Error/500" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
我的错误控制器如下:
public class ErrorController : Controller
{
[ActionName("404")]
public ActionResult NotFound()
{
return View();
}
[ActionName("500")]
public ActionResult ServerError()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在500通过在我的一个视图中抛出异常来测试错误页面:
[ActionName("contact-us")]
public ActionResult ContactUs()
{
throw new DivideByZeroException();
return View();
}
Run Code Online (Sandbox Code Playgroud)
为什么只处理404错误?如何显示错误页面以查找500错误?
DGi*_*bbs 19
想出这个......
Global.asax.cs在创建项目时留下了一些样板代码:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Run Code Online (Sandbox Code Playgroud)
特别是:
filters.Add(new HandleErrorAttribute());
Run Code Online (Sandbox Code Playgroud)
这将创建一个新实例,HandleErrorAttribute全局应用于我的所有视图.
如果没有自定义,如果视图在使用此属性时抛出错误,MVC将Error.cshtml在以下Shared文件夹中显示默认文件:"Sorry, an error occurred while processing your request."来自.
从HandleErrorAttribute上的文档:
默认情况下,当具有HandleErrorAttribute属性的操作方法抛出任何异常时,MVC将显示位于〜/ Views/Shared文件夹中的Error视图.
评论此行解决了问题,并允许我使用自定义错误页面500错误.
| 归档时间: |
|
| 查看次数: |
18855 次 |
| 最近记录: |