我通过软件包管理器控制台安装了NuGet软件包 Ninject Integration for WebApi2 。
根据wiki on the project's GitHub pages,这应该在App_Start文件夹中创建一个名为NinjectWebCommon
的类。但它没有。
同样的GitHub维基页面解释了应该看到的内容,以便您自己添加。所以我尝试自己创建NinjectWebCommon
课程。这里的问题是我无法在以下代码段中找到OnePerRequestModule
的命名空间。
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
替代方案,根据GitHub维基页面,两者之间没有任何有效区别,就是修改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包有点不对劲。
答案 0 :(得分:9)
就这样,我刚刚找到了答案:还有一个必须引用的额外NuGet包:
Ninject.Web.WebApi.WebHost
为WebApi2安装&#34; Ninject集成&#34;包装还不够。
这应该更清楚地解释。