决定 ExceptionFilterAttribute OnException 方法的实现

Deciding on implementation of ExceptionFilterAttribute OnException method

我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我继承了ExceptionFilterAttribute class 并覆盖了onException 方法。

public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext actionExecutedContext)
    {
        if (actionExecutedContext != null)
        {
            Logger.LogException(actionExecutedContext.Exception);
        }
    }
}

最近,我看到一些实现在重写的实现中也调用了基础 class OnException 方法。

public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            if (actionExecutedContext != null)
            {
                base.OnException(actionExecutedContext);
                Logger.LogException(actionExecutedContext.Exception);
            }
        }
    }

以上两种实施方式中哪一种是可取的?在这种情况下调用基本方法有什么用?

我有同样的问题,所以基于 https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Http/Filters/ExceptionFilterAttribute.cs(我希望它是当前的代码源)调用 base.OnException(actionExecutedContext);

没有意义

同样从过滤器的性质来看,您可以注册多个过滤器并且不需要继承来链接。 从理论上讲,您可以调用 base 以防万一当前实现发生变化,并且在抽象 base class 中确实做了任何事情。 我没有在我的实现中调用它。