【发布时间】:2011-05-10 08:35:48
【问题描述】:
我一直在关注 HandleError 属性的本指南: blogs.msdn.com 我这样使用(AccountController):
[HandleError(View="ErasErrorPage")]
public ActionResult Index()
{
ViewBag.admins = _accountMapper.GetAdmins(false);
ViewBag.members = _accountMapper.GetMembers(false);
ViewBag.Countries = _countryMapper.GetCountries();
return View();
}
此代码引发异常,因为 _accountMapper.GetAdmins(false) 由于 System.Data.EntityException 而失败。
我已将 ErasErrorPage 视图放在共享文件夹中,并添加了 <customErrors mode="On"/>,但 ErasErrorPage 未显示。当错误发生时,我得到的只是一个黄色的死亡屏幕,上面写着:
显然,将模式设置为“Off”或“RemoteOnly”并不能解决问题。
有人知道为什么这不起作用吗?
编辑
如果我直接浏览http://localhost:3527/Account/Index,我会得到正确的 ErasErrorPage,但我不希望这样。我希望网站在某处引发异常时自动重定向到该页面。这可能吗?
EDIT2
我已将 [HandleError(View="ErasErrorPage")] 属性放在每个 Public ActionResult methodName() { ... } 方法之前,但我仍然收到黄屏死机说我需要将模式更改为“关闭”或“仅远程”...
【问题讨论】:
-
这是一个非常古老的问题,但对于偶然发现它的人来说。您必须有 customErrors="On",并且异常必须生成 500 类错误,抛出 403 并且不会触发,它不会处理已处理的子操作或异常,并且异常必须从 System.例外,没有本地人。一个简单的测试方法是简单地删除 View 属性,检查它是否至少触发到默认的错误页面。如果是,您知道它是自定义视图的路径错误等。
标签: c# asp.net asp.net-mvc-3