Is there a \"global\" OnActionExecuting that I can override to have all my MVC actions (regardless of controller) do something when they get called? If so, how?
Asp.net MVC3 added support for Global Filters
From the ScottGu blog:
ASP.NET MVC supports the ability to declaratively apply “cross-cutting” logic using a mechanism called “filters”. You can specify filters on Controllers and Action Methods today using an attribute syntax like so:
Developers often want to apply some filter logic across all controllers within an application. ASP.NET MVC 3 now enables you to specify that a filter should apply globally to all Controllers within an application. You can now do this by adding it to the GlobalFilters
collection. A RegisterGlobalFilters()
method is now included in the default Global.asax class template to provide a convenient place to do this (it is then called by the Application_Start()
method):
The filter resolution logic in MVC 3 is flexible so that you can configure a global filter that only applies conditionally if certain conditions are met (for example: debugging is enabled, or if a request uses a particular http verb, etc). Filters can also now be resolved from a Dependency Injection (DI) container.