MVC HandleError 属性在控制器上不起作用
Posted
技术标签:
【中文标题】MVC HandleError 属性在控制器上不起作用【英文标题】:MVC HandleError attribute not working on Controller 【发布时间】:2011-03-24 09:16:21 【问题描述】:我正在试验 Elmah 和 MVC 在异常处理方面的关系,并对以下代码的结果感到惊讶。这是一个全新的,直接来自项目模板 MVC 应用程序,我只在 web.config 中添加了 Elmah 模块和处理程序。当然还有“投掷”:
[HandleError]
public class HomeController : Controller
public ActionResult Index()
ViewData["Message"] = "Welcome to ASP.NET MVC!";
throw new Exception("Just for you Elmah!");
return View();
抛出错误时中断设置为关闭,但调试器仍会中断。当我继续时,我得到一个 YSOD 和一个 Elmah 错误日志,但似乎 HandleError
什么也没做。
就在 我不认为我必须打开自定义错误,因为我认为这仅适用于“我的”未处理错误。我想 MVC 和我一样是该服务的客户端。
【问题讨论】:
***.com/questions/619582/… 【参考方案1】:检查 HandleErrorAttribute 是否添加到 Global.asax.cs 中的 GlobalFiltersCollection
public static void RegisterGlobalFilters(GlobalFiltersCollection filters)
filters.Add(new HandleErrorAttribute());
【讨论】:
全局应用过滤器相当于将属性添加到每个操作。如果我只将它应用于一个动作并且它不起作用,那么将它应用于所有动作只会让它在任何地方都不起作用。【参考方案2】:所以开始ASP.net MVC [HandleError] not catching exceptions,然后进入日志记录How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?
【讨论】:
以上是关于MVC HandleError 属性在控制器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用全局日志记录时,MVC [HandleError] HandleErrorAttribute 调用了两次