c# – 依赖注入ASP.NET WebAPI ActionFilters使用Ninject不工作

前端之家收集整理的这篇文章主要介绍了c# – 依赖注入ASP.NET WebAPI ActionFilters使用Ninject不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Ninject在ASP.NET WebAPI中的ActionFilters上设置DI.我按照这里的指示: https://github.com/ninject/Ninject.Web.WebApi/wiki/Dependency-injection-for-filters

我创建我的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控制器中的所有操作运行.但是,我已经在过滤器中的两个被覆盖的方法中设置了断点,并且它从未被触发.我在配置中设置了一个断点,可以确认它正在执行.

我失踪了什么我需要这个ActionFilter在我的项目中的每个ApiController中的所有操作上运行.

解决方法

在你的启动类
public void Configuration(IAppBuilder app)
{    
    var kernel = new StandardKernel();
    // register IValidateApiTokenService
    var config = new HttpConfiguration();
    config.Filters.Add(new ApiAuthorizeFilter(kernel.Get<IValidateApiTokenService>());
}

猜你在找的C#相关文章