diff --git a/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs b/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs index f612f3f61c..e9b8e886eb 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs +++ b/src/Microsoft.AspNet.Mvc.Core/Filters/DefaultFilterProvider.cs @@ -88,6 +88,14 @@ namespace Microsoft.AspNet.Mvc.Filters ApplyFilterToContainer(filterItem.Filter, filterFactory); } + + var controllerFilter = context.ActionContext.Controller as IFilter; + if (controllerFilter != null) + { + // If the controller implements a filter, we want it to be the first to run. + var descriptor = new FilterDescriptor(controllerFilter, FilterScope.Action); + context.Result.Insert(0, new FilterItem(descriptor, controllerFilter)); + } } private void InsertControllerAsFilter(FilterProviderContext context, IFilter controllerFilter) diff --git a/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj b/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj index c99bf0c57a..8ce7dd1ad8 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj +++ b/src/Microsoft.AspNet.Mvc.Core/Microsoft.AspNet.Mvc.Core.kproj @@ -110,6 +110,7 @@ +