首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Ninject.Web.Mvc 2.2和NINObject2.2运行时4.0版的MVC2总是要求控制器的无参数构造函数

带有Ninject.Web.Mvc 2.2和NINObject2.2运行时4.0版的MVC2总是要求控制器的无参数构造函数
EN

Stack Overflow用户
提问于 2011-11-09 21:23:32
回答 3查看 259关注 0票数 0

我之前的一个项目运行的是NINObject2.0运行时版本2.0,现在我在一个新项目中使用了Ninject,并在运行时版本4.0中使用了新的Ninject web.mvc版本2.2。

每次我收到错误时,都没有无参数的构造函数

无效的操作异常

尝试创建HomeController类型的控制器时出错。确保控制器有一个无参数的公共构造函数。

我错过了什么。所有绑定都已注册。

我现在是否需要像我在一些示例中看到的那样,为控制器定义接口(如HomeController和IHomeController ),或者我是否应该重新使用旧版本

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-10 22:28:12

我已经在论坛上看到过几次提到这个问题,没有直接的答案,这里是上述问题的解决方案,即使用最新的解决方案

  1. 从github下载最新的Ninject。
  2. 我为MVC2获取的对象名为Ninject.Web.Mvc2-2.2.0.0-release-net-4.0 (运行时版本4)
  3. Now在添加引用时添加Ninject.Web.Mvc.dll(通过右键单击VS中的属性来检查版本是否与上面相同)
  4. 现在从同一父文件夹中的库文件夹添加Ninject.dll (检查版本如上)

<代码>H19现在从扩展文件夹添加CommonServiceLocator.NinjectAdapter.dll在lib父文件夹中(检查上面的版本)。

所有这些中缺少的一环是commonserviceLocator.dll,正确的版本应该匹配。如果您确定您的绑定与我的绑定一样正确,并检查您的项目是否与旧版本一起工作,则应该尝试此方法。

感谢所有人,祝你好运:)

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 05:52:32

有一个版本没有正确显示激活异常,但却显示了此异常。最有可能的问题是重复的绑定。

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 06:00:46

除了Remo Gloor所说的之外,您可能还想检查MVC是否设置为正确使用Ninject。我在一个旧版本的MVC插件上手动做了一些事情,最终只需要咬紧牙关,让全局扩展NinjectHttpApplication类,这是我之前一直避免的。

您得到的错误是如果MVC尝试使用其内置的控制器工厂来生成控制器时会得到的错误。因此,您可能希望在控制器类上创建自定义方法绑定,并在其中放置断点,以确保它甚至被调用。

您可能还想切换到2.3版。你可以拿到最新版本的here和它的所有扩展。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8065650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档