C#Ninject ActionFilters没有绑定到控制器

时间:2014-04-28 09:03:55

标签: c# ninject

我正在尝试使用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中注册过滤器没有帮助。是否有其他地方过滤器应该注册?

由于

1 个答案:

答案 0 :(得分:0)

我想通了 - 我没有使用NinjectHttpApplication扩展我的HttpApplication类,所以DependencyResolver没有设置(我假设这是由Ninject,如果你确实使用他们的实现)。

因此,设置DependecyResolver的简单指令会导致实例化并触发自定义ActionFilters:

DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));

由于