我有一个运行Ninject 2.0运行时版本2.0的先前项目,现在我在一个新项目中使用Ninject并使用新的Ninject,ninject web.mvc 2.2版用于运行时版本4.0。
每次我得到错误都没有无参数构造函数
无效的操作异常
尝试创建HomeController类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。
我错过了什么。所有绑定都已注册。
我是否需要现在为控制器定义接口,例如HomeController作为IHomeController,正如我在一些示例中看到的那样,或者我是否回到使用旧版本
答案 0 :(得分:1)
有一个版本没有正确显示激活异常但显示此异常。最有可能的问题是重复绑定。
答案 1 :(得分:1)
除了Remo Gloor所说的,你可能还想检查MVC是否设置为正确使用Ninject。我在较旧版本的MVC插件上手动做了一些事情,最后需要咬住子弹并使Global扩展NinjectHttpApplication
类,这是我以前一直在避免的。
您遇到的错误是MVC尝试使用其内置控制器工厂生成控制器时会出现的错误。因此,您可能希望在控制器类上创建自定义方法绑定,并在其中放置断点以确保它甚至被调用。
您可能还想切换到2.3版。您可以获取Ninject的最新版本及其所有扩展here。
答案 2 :(得分:1)
我在论坛上已经多次提到这个问题没有直接答案,这里是解决上述问题的方法,即使用最新的ninject
所有这些中缺少的链接都是commonserviceLocator.dll,正确的版本应该匹配。如果你确定你的绑定是正确的,那么应该尝试这一点,并检查你的项目是否适用于旧版本。
感谢大家,祝你好运:)