Это должно работать автоматически при условии , что для приложения настроен правильный ControllerFactory.
Насколько я могу судить, это должен быть экземпляр TurbineControllerFactory или производный класс. TurbineControllerFactory устанавливает TurbineActionInvoker, который отвечает за поиск правильных фильтров.
Обратите внимание, что если вы зарегистрируете пользовательский IControllerFactory в своем контейнере DI (Service Locator в терминологии Turbine), вместо этого будет использоваться этот тип IControllerFactory, и если он не является производным от TurbineControllerFactory, он не будет назначать экземпляр TurbineActionInvoker созданный контроллер - это снова означает, что ваш InjectableFilterAttribute никогда не вызывается.
Предполагаемый способ настройки приложения Turbine - определить пользовательский класс приложения, производный от TurbineApplication.
Например, вот полное содержимое настроенного на турбине Global.asax:
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplication" Language="C#" %>
Однако обратите внимание, что Global.asax.cs не существует.
Класс MyApplication должен быть производным от TurbineApplication и правильно настраивать DI-контейнер. Вот один из способов сделать это:
public class MyApplication : TurbineApplication
{
static MyApplication()
{
ServiceLocatorManager.SetLocatorProvider(() => new WindsorServiceLocator());
}
}
Очевидно, что вы можете заменить WindsorServiceLocator другим DI-контейнером, если вы используете другой.