我有一个ASP.NET MVC 3应用程序。 它在我的本地计算机上成功运行,使用Visual Studio 2012 RC下的IIS Express。
但它似乎没有在我的服务器/主机上运行。 我收到以下错误:
使用隐式自绑定激活HomeController时出错 HomeController没有构造函数可用于创建实例 实现类型。
激活路径:
- 请求HomeController
醇>建议:
确保实现类型具有公共构造函数。
- 醇>
如果您已实现Singleton模式,请使用与InSingletonScope()的绑定。
我在网上搜索过,找不到解决方法。 它看起来是一个错误,因为我没有定义构造函数或在我的HomeController中有私有构造函数,但事实并非如此。
我在bin文件夹中有NInject.dll
..
无法弄清楚......
答案 0 :(得分:0)
这确实是一个NInject.dll问题。我之前使用的是.NET 4.5,而Web主机则使用的是.NET 4.5。所以我将我的应用程序切换到.NET 4.0。我后来从已经运行的应用程序中选择了一个NInject.dll,并将其替换为当前应用程序的dll并且它有效。
答案 1 :(得分:0)
我有完全相同的问题并以同样的方式修复它。
出于提供信息的目的,请注意当我在各种服务器上比较ninject.dll时(我们的一台服务器使用相同的代码),所有.dll文件的版本和大小都相同。
一位同事建议我下载一个名为Hashtab的工具,该工具确认dll实际上是不同的。
在我们所有的服务器上,这些站点都设置为在.NET4.0下运行,但是在运行的服务器上安装了.NET4.5 ...该站点运行的应用程序池是.NET4但显然有.NET4 .5安装了一些文件。
如果有疑问,请删除.dll,确保您的项目配置为在正确版本的.NET框架下构建,然后通过NuGet添加dll。
答案 2 :(得分:0)
我在使用NInject遇到同样的问题时遇到了麻烦,并且没有阅读完整的消息。
确保您的构造器是公共的
地雷受到保护。希望可以节省别人的时间:)