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 调用了两次

数据表在 mvc 的视图页面中的我的表上不起作用

ASP.NET MVC OutputCache 不适用于根 URI

HandleError Attribute

过滤属性在 Grid.Mvc 的页面上不可见

未记录 ELMAH 和 ASP.NET MVC 自定义错误