我在使用 Ninject 和 MVC 5 Web api 2.2 时遇到问题
Posted
技术标签:
【中文标题】我在使用 Ninject 和 MVC 5 Web api 2.2 时遇到问题【英文标题】:I am having issues with Ninject and MVC 5 Web api 2.2 【发布时间】:2015-04-17 06:25:15 【问题描述】:我尝试了MVC5, Web API 2 and and Ninject 中的解决方案,但包破坏了我的构建(System.Web)。我也试过“Ninject.MVC3”包。当我使用“Update-Package -reinstall Microsoft.AspNet.WebApi.WebHost”修复它时,我收到错误:
尝试创建类型错误的控制器时发生错误:“AnyController”。确保控制器有一个无参数的公共构造函数。
我已经多次安装、重新安装、卸载 - 安装了所有软件包。
我的 NinjectWebCommon.cs 是普通的,除了以下内容:
private static void RegisterServices(IKernel kernel)
kernel.Bind<IMonitoringConfigurationService>()
.To<MonitoringConfigurationService>();
如果有任何帮助,我将不胜感激
【问题讨论】:
【参考方案1】:不确定问题的原因是什么,因为最新版本的 Ninject 几乎是即插即用的。确保您已安装以下 Nuget 包。如果您有其他版本或任何奇怪的东西,请卸载它们:
Ninject
Ninject.MVC5
Ninject.Web.WebApi
Ninject.Web.Common (Added by Ninject.Web.WebApi)
Ninject.Web.Common.WebHost (Added by Ninject.MVC5)
其他任何内容都是不必要的,应该删除。最后两个包是作为依赖安装的,所以你真正应该明确安装的是Ninject.MVC5
和Ninject.Web.WebApi
。要么安装Ninject
基础包。
一旦你得到了正确的包,那么它基本上可以归结为你在NinjectWebCommon.cs
中的配置。您需要修改的唯一方法是RegisterServices
,在那里,您需要添加项目所需的所有绑定。如果您收到错误消息说您需要无参数构造函数,这仅表示您尚未添加构造函数所需的绑定。
【讨论】:
以上是关于我在使用 Ninject 和 MVC 5 Web api 2.2 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
在 MVC3 应用程序中将 Ninject 与自定义角色提供程序一起使用
如何在 asp.net Web 窗体上实现 Ninject 或 DI?
Ninject 在使用 NinjectHttpModule 时创建一个额外的实例