Asp.net mvc 4 使用Web API正确实现Ninject筛选器绑定

Asp.net mvc 4 使用Web API正确实现Ninject筛选器绑定,asp.net-mvc-4,asp.net-web-api,ninject,Asp.net Mvc 4,Asp.net Web Api,Ninject,当绑定到过滤器时,我应该使用Ninject.Web.WebApi中包含的BindFilter扩展方法还是下面的新约定,或者两者都使用 GlobalConfiguration.Configuration .Filters.Add(new ApiValidationFilter(kernel.Get<IApiAuthenticationService>())); GlobalConfiguration.Configuration .Filters.Add(新的ApiVali

当绑定到过滤器时,我应该使用
Ninject.Web.WebApi
中包含的
BindFilter
扩展方法还是下面的新约定,或者两者都使用

GlobalConfiguration.Configuration
      .Filters.Add(new ApiValidationFilter(kernel.Get<IApiAuthenticationService>()));
GlobalConfiguration.Configuration
.Filters.Add(新的ApiValidationFilter(kernel.Get());
我现在正在使用后者,但不断收到下面的错误消息。在添加web api过滤器之前,我没有在我的项目中得到这个

无法完成该操作,因为DbContext已被释放


我最终不得不求助于

            var apiRepository = new ApiRepository(new DatabaseFactory());
            var apiAuthenticationService = new ApiAuthenticationService(apiRepository, new UnitOfWork(new DatabaseFactory()), new ValidationProvider(null));

您不必使用过滤器绑定语法,但它确实让您的生活更轻松,而且做了正确的事情。我会以使用内核为理由拒绝你使用的方法。别管了,那只是一种糟糕的形式。哦,你必须使用分叉版本。Ninject.Web.WebApi-RC是Remo更新官方扩展之前的临时包(该扩展仍与RTM中断)。是的,使用Nuget,但获取Ninject.Web.WebApi-RC包,而不是Ninject.Web.WebApi。至少在Remo更新官方文件,然后删除-RC并获取官方软件包之前,我已经尝试过了,但它仍然不在RequestScope范围内工作。