我正在尝试使用Ninject在ASP.NET WebAPI的ActionFilters上设置DI。我跟着指示操作:https://github.com/ninject/Ninject.Web.WebApi/wiki/Dependency-injection-for-filtersASP.NET的WebAPI ActionFilters的依赖注入使用Ninject不工作
创建我ActionFilter像这样:
public class ApiAuthorizeFilter : AbstractActionFilter
{
private readonly IValidateApiTokenService _validateApiTokenService;
public ApiAuthorizeFilter(IValidateApiTokenService validateApiTokenService)
{
_validateApiTokenService = validateApiTokenService;
}
public override bool AllowMultiple => true;
public override void OnActionExecuting(HttpActionContext actionContext)
{
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
}
}
我配置了,像这样:
kernel.BindHttpFilter<ApiAuthorizeFilter>(FilterScope.Controller);
我基于在上面的链接信息的理解是, ActionFilter应该运行所有WebAPI控制器中的所有Actions。但是,我在过滤器中的重写方法中都设置了断点,并且它永远不会被击中。我在配置中设置了一个断点,并可以确认它正在执行。
我错过了什么?我需要这个ActionFilter在我的项目中的每个ApiController中的所有Actions上运行。
构建的你是如何配置注入或ApiAuthorizeFilter的参数? – DavidS
@DavidS这就是我想要解决的问题。我想将IValidateApiTokenService注入到我的过滤器中。 –
不知道如何实例化IValidateApiTokenService,我无法给出具体的建议,但有几个示例说明如何在示例代码中执行此操作(如果尚未查看):https: //github.com/ninject/Ninject.Web.WebApi/blob/master/src/SampleApplication/Controllers/FilterInjectionExample/FilterInjectionModule.cs – DavidS