【发布时间】:2014-12-08 22:17:30
【问题描述】:
我通过包管理器控制台安装了 NuGet 包Ninject Integration for WebApi2。
根据wiki on the project's GitHub pages,这应该在App_Start 文件夹中创建了一个名为NinjectWebCommon 的类。但它没有。
同一个 GitHub wiki 页面解释了您应该看到的内容,以便您自己添加。所以我尝试自己创建NinjectWebCommon 类。这里的问题是我在下面的sn-p中找不到OnePerRequestModule的命名空间。
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
替代方案,根据 GitHub wiki 页面,两者之间没有有效区别,是修改 global.asax。所以我尝试了这种方法并添加了一些这样的绑定
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 包有问题。
【问题讨论】:
标签: c# asp.net-web-api dependency-injection ninject nuget