7

我目前在我的 asp.net webapi 项目中使用 ninject.mvc3,它工作正常。我现在正在尝试绑定过滤器属性,但是在使用静态类方法时界面BindFilterBindHttpFilter缺少。如果我添加包,它在那里但项目没有运行(这里的问题,解决方案说不推荐使用)所以我把它删除了。IKernelNinjectWebCommonNinject.Web.WebApiNinject.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 中绑定过滤器属性?有这么多的库和项目,文档并没有告诉你什么是当前工作的,什么是弃用的......

4

2 回答 2

6

您使用的包是正确的,因为它们还没有包含 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但我有一些错误,现在不记得到底是什么错误。无论如何,在阅读了关于上述拉取请求的讨论后,我放弃了这个包。

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

于 2012-10-08T05:15:28.090 回答
4

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

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

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

using Ninject.Web.WebApi.FilterBindingSyntax;

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

于 2013-06-06T12:33:54.667 回答