How to do dependency injection to Action Filter on ASP.NET Web API
asp.net-web-api, asp.net-web-api-filters, c#, dependency-injection, ioc-container
Solution
You need to check your specific IOC implementation. IOC Containers such as NInject and Autofac have some type of filter injection by injecting public properties. Windsor I am unsure about, but here is a link that creates a wrapper which might help with Windsor: http://eagle081183.wordpress.com/2010/09/21/dependency-injection-with-asp-net-mvc-action-filters/ and another article directly addressing the issue with Windsor: http://weblogs.asp.net/psteele/archive/2009/11/04/using-windsor-to-inject-dependencies-into-asp-net-mvc-actionfilters.aspx.
For completeness with NInject and Autofac:
NInject:
- http://codeclimber.net.nz/archive/2009/02/10/how-to-use-ninject-to-inject-dependencies-into-asp.net-mvc.aspx
- Ninject in an Action Filter
Autofac:
- ASP.NET MVC 3, Action Filters, and Autofac Dependency Injection
**EDIT - additional option **
You should be able to do `GlobalConfiguration.Configuration.DependencyResolver.GetService(...)` from any filter regardless of the IOC container you are using.
Problem
I really get stuck on the approach to do dependency injection into action filter of web api. I have an action filter like this: ``` public class AuthorizationAttribute : ActionFilterAttribute { public IApiKeyRepository Repository { get; set; } private Guid GetApiKey(string customerKey) { return Repository.GetApiKey(customerKey); } public override void OnActionExecuting(HttpActionContext actionContext) { } } ``` I would like to do property injection on the property Repository by using Windsor (but it does not matter which IoC container is used) I did come up to customize FilterProvider but it did not work out for me, does anyone have solution or running code on this? it will be much appreciated