在与RegisterGlobalFilters和HandleErrorAttribute长期斗争之后,我决定回到最基本的部分。我使用该模板在VS10中创建了一个新的MVC 3项目。在About操作中添加throw DivideByZeroException并启动开发服务器。预计不会看到黄色屏幕。
但我做到了。
为什么这对我不起作用?
更新
archil和Adam Tuliper的建议有点奏效。已调用"错误"视图。
然后我继续在RegisterGlobalFilters中添加它。
filters.Add(new HandleErrorAttribute { ExceptionType = typeof(DivideByZeroException), View = "DivideByZeroException", Order = 1 });
filters.Add(new HandleErrorAttribute { View = "AllOtherExceptions", Order = 2 });
调用了AllOtherException视图。为什么不使用DivideByZeroException视图?
后续问题已发布在此处
HandleErrorAttribute在满足以下条件时工作
- 在web配置中启用了CustomErrors
- 若异常为HttpException,则其错误代码为500
在您的情况下,满足第二个条件,确保您在上打开了自定义错误
<system.web>
<customErrors mode="On"></customErrors>
</system.web>
web.config中是否打开了自定义错误?如果不打开它,它应该会工作。