Error handling 只应运行第一个MVC ErrorHandler属性

Error handling 只应运行第一个MVC ErrorHandler属性,error-handling,asp.net-mvc-5,Error Handling,Asp.net Mvc 5,我正在尝试使用MVC自定义错误,以便只记录意外的控制器错误 为此,我创建了一个“HandleAndLogError”属性,它继承自HandleErrorAttribute。我只希望在方法上的其他错误处理程序属性未涵盖异常时运行HandleAndLogError属性 例如: [HandleAndLogError(View = "Error", Order = -1)] public class MyController : Controller { [HandleErrorWithoutL

我正在尝试使用MVC自定义错误,以便只记录意外的控制器错误

为此,我创建了一个“HandleAndLogError”属性,它继承自HandleErrorAttribute。我只希望在方法上的其他错误处理程序属性未涵盖异常时运行HandleAndLogError属性

例如:

[HandleAndLogError(View = "Error", Order = -1)]
public class MyController : Controller
{
    [HandleErrorWithoutLogging(ExceptionType = typeof(InvalidOperationException), View = "Error", Order = 0)]
    public ActionResult SomeAction()
    {
        ...
    }
}
当某个操作引发InvalidOperationException时,我只希望HandleError不进行日志处理。 但发生的情况是,HandleError在不进行日志记录的情况下运行,然后HandleAndLogError在之后直接运行


有没有一种简单的方法可以让第一个错误处理程序阻止其他人运行?

我找出了我的错误所在,结果证明它非常简单。在传递给处理程序的上下文中有一个ExceptionHandled标志,该标志在基本代码运行时设置为true。我只需要用if块包装我的代码

对于任何想知道的人,这就是我的结局:

public class HandleErrorWithLoggingAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        if(!filterContext.ExceptionHandled)
        {
            base.OnException(filterContext);

            if (filterContext.ExceptionHandled)
            {
                ...
            }
        }
    }
}