2012-10-06 84 views
6

我目前在我的asp.net webapi项目中使用ninject.mvc3,并且它工作正常。我现在试图绑定筛选器属性,但在使用NinjectWebCommon静态类方法时,接口中缺少BindFilterBindHttpFilter。如果我添加了Ninject.Web.WebApi程序包,但其中的项目不运行(问题here,解决方案说Ninject.Web.WebApi已弃用),因此我将其删除。使用Ninject绑定WebApi筛选器属性

我也跟着这github wiki确切,仍然没有找到this.BindFilter。我有最新的nuget软件包; Ninject(3.0.1.10),Ninject.Web.Common(3.0.0.7),Ninject.MVC3(3.0.0.6)

BindFilter或BindHttpFilter在哪里?有什么改变吗?如何在asp.net web api中绑定过滤器属性?有这么多的图书馆和项目,文档没有告诉你什么是当前工作,什么是废弃....

回答

4

你使用的包是正确的,他们不包括BindHttpFilter呢。 BindHttpFilter扩展方法来自https://github.com/remogloor/Ninject.Web.WebApi,它目前不适用于WebApi发行版,因为它是针对测试版WebApi版本编写的。为了注入WebApi过滤器,您需要BindHttpFilter,您无法将WebApi过滤器传递到BindFilter方法中。

这是https://github.com/ninject/Ninject.Web.WebApi/pull/1似乎是我能找到的关于更新状态的最新信息。

你也可以尝试其他NuGet包http://nuget.org/packages/Ninject.Web.WebApi-rc但我有一些错误,不记得现在到底是什么错误。无论如何,在阅读关于上述请求的讨论后,我放弃了这个包。

在我的情况下,我想实现一个日志过滤器,所以我只是要创建一个静态方法,我可以从过滤器调用,直到注入支持将可用。

4

我有同样的问题。 1)我安装最新的(但不稳定)Ninject从PM控制台Web.Api使用命令

PM> Install-Package Ninject.Web.WebApi -Pre 

2),那么我这 “使用” NinjectWebCommon.cs

的部分
using Ninject.Web.WebApi.FilterBindingSyntax; 

后添加这些步骤我的IKernel有方法BindHttpFilter。而且一切正常

+0

这对我有用,但我相信你的意思是NinjectWebCommon.cs – friggle

+0

@friggle是的,当然! –