我安装了 NuGet 包 Ninject Integration for WebApi2 通过包管理器控制台。
根据wiki on the project's GitHub pages , 这应该创建了一个名为 NinjectWebCommon
的类在 App_Start 文件夹中。但它没有。
同一个 GitHub wiki 页面解释了您应该看到的内容,以便您可以自己添加。所以我尝试创建 NinjectWebCommon
自己上课。这里的问题是我找不到 OnePerRequestModule
的命名空间在以下代码段中。
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
另一种方法是修改 global.asax,根据该 GitHub wiki 页面,两者之间没有有效区别。所以我尝试了这个方法并添加了一些绑定(bind)
private void RegisterServices(IKernel kernel)
{
kernel.Bind<IEntityAccess>().To<EntityAccess>();
kernel.Bind<IDictionaryRepository>().To<DictionaryRepository>();
}
并发现我的项目已构建,但是当向 WebAPI 项目发送请求时找不到它(即,我收到 404 响应)。
所以显然还有其他一些必要的连接,但我的项目中没有。
看来尽管更改了我的 global.asax
从 NinjectHttpApplication
派生, global.asax
不再被调用。
谁能告诉我我可能遗漏了什么?我已经卸载并重新安装了 NuGet 包几次,但是 NinjectWebCommon
类从未出现,我的 global.asax 文件也从未被修改。
我也读过 Ninject's own documentation但令人沮丧的是,这是一个相当大的教程,涵盖了 IoC 的基础知识以及 Ninject 的运作方式,而不是告诉您如何开始使用 Ninject。
还有 this SO post询问如何开始使用 Ninject for WebAPI,所以看起来他们的 NuGet 包有问题。
最佳答案
就这样,我刚刚找到了答案:必须引用一个额外的 NuGet 包:
Ninject.Web.WebApi.WebHost
安装“Ninject integration for WebApi2”包是不够的。
这确实应该更清楚地解释。
关于c# - 注入(inject)和 WebAPI : Getting started after install from NuGet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355420/