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 @@
+