ASP.NET Core out-of-the-box supports dependency injection on the action filter level. You have to use constructor injection to inject your dependencies in the actionfilter:
However now it is no longer possible to simply add the action filter as an attribute on top of your controller or action method. This is because attributes must have their constructor parameters supplied where they are applied. Instead you have to use one of the following attributes:
- TypeFilterAttribute
- ServiceFilterAttribute
The key difference is that TypeFilterAttribute
will find and load the dependencies through DI, and inject them into your action filter.
The ServiceFilterAttribute
on the other hand attempts to find the filter from the service collection. This means that you have to register your actionfilter first: