我正在尝试使用Ninject将ActionFilter
绑定到控制器具有FilterAttribute
的控制器,但无法触发ActionFilters。
我的过滤器和属性定义为:
public class AuthorisationFilter : IAuthorizationFilter {...}
public class AuthoriseAttribute : AuthorizeAttribute {...}
然后我有一个声明了Authorise
属性的控制器:
[Authorise]
public class HomeController : Controller {...}
无论我如何尝试使用Ninject模块将过滤器绑定到控制器......:
Kernel
.BindFilter<AuthorisationFilter>(FilterScope.Controller, 0)
.WhenControllerHas<AuthoriseAttribute>();
Kernel
.BindFilter<AuthorisationFilter>(FilterScope.Controller, 0)
.WhenControllerType<HomeController>();
Kernel
.BindFilter<AuthorisationFilter>(FilterScope.Controller, 0);
......过滤器不会开火。
在GlobalFilterCollection中注册过滤器没有帮助。是否有其他地方过滤器应该注册?
由于
答案 0 :(得分:0)
我想通了 - 我没有使用NinjectHttpApplication
扩展我的HttpApplication
类,所以DependencyResolver
没有设置(我假设这是由Ninject,如果你确实使用他们的实现)。
因此,设置DependecyResolver的简单指令会导致实例化并触发自定义ActionFilters:
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
由于