使用Ninject绑定Web Api过滤器属性

时间:2012-10-06 06:41:59

标签: ninject asp.net-web-api

我目前正在我的asp.net webapi项目中使用ninject.mvc3,它运行正常。我现在正在尝试绑定过滤器属性,但在使用BindFilter静态类方法时,BindHttpFilter接口中缺少IKernelNinjectWebCommon。如果我添加了Ninject.Web.WebApi软件包,但是项目没有运行(问题here,解决方案说Ninject.Web.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中绑定过滤器属性?有这么多的库和项目,文档没有告诉你当前工作的是什么以及什么是弃用的....

2 个答案:

答案 0 :(得分:5)

您使用的软件包是正确的,因为它们还不包含BindHttpFilter。 BindHttpFilter扩展方法来自https://github.com/remogloor/Ninject.Web.WebApi,它目前不适用于WebApi的发布版本,因为它是针对beta WebApi版本编写的。为了注入WebApi过滤器,你需要BindHttpFilter,你不能将WebApi过滤器传递给BindFilter方法。

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

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

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

答案 1 :(得分:4)

我有同样的问题。 1)我使用命令

从PM控制台安装最新(但不稳定)的Ninject for Web.Api
PM> Install-Package Ninject.Web.WebApi -Pre

2)然后我将其添加到NinjectWebCommon.cs的“使用”部分

using Ninject.Web.WebApi.FilterBindingSyntax;

在这些步骤之后,我的IKernel有方法BindHttpFilter。一切顺利