c# - 注入(inject)和 WebAPI : Getting started after install from NuGet

标签 c# asp.net-web-api dependency-injection ninject nuget

我安装了 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.asaxNinjectHttpApplication 派生, 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/

相关文章:

c# - GetPrivateProfileString 没有修剪?

c# - 学习 .NET Web 服务的最佳资源是什么?

c# - 编译器在引用程序集时遇到麻烦

c# - 在 C# Web API 中需要 HTTPS

c++ - 这可以重构为适当的依赖注入(inject)吗?

c# - 更新条目向数据库添加一个新条目

c# - 即使使用 ConfigureAwait(false),在 WebAPI 中同步调用异步方法也会死锁

c# - 如何使用 Active Directory 存储在 AcquireTokenAsync 中收到的 token

asp.net - 仅当接口(interface)尚未绑定(bind)时,如何在 Ninject 中绑定(bind)接口(interface)?

.net - Autofac 中的参数化抽象工厂