使用HomeController的隐式自绑定激活HomeController时出错 - NInject错误

时间:2012-08-21 05:57:12

标签: asp.net-mvc ninject

我有一个ASP.NET MVC 3应用程序。 它在我的本地计算机上成功运行,使用Visual Studio 2012 RC下的IIS Express。

但它似乎没有在我的服务器/主机上运行。 我收到以下错误:

  

使用隐式自绑定激活HomeController时出错   HomeController没有构造函数可用于创建实例   实现类型。

     

激活路径:

     
      
  1. 请求HomeController
  2.         

    建议:

         
        
    1. 确保实现类型具有公共构造函数。

    2.   
    3. 如果您已实现Singleton模式,请使用与InSingletonScope()的绑定。

    4.   

我在网上搜索过,找不到解决方法。 它看起来是一个错误,因为我没有定义构造函数或在我的HomeController中有私有构造函数,但事实并非如此。

我在bin文件夹中有NInject.dll ..

无法弄清楚......

3 个答案:

答案 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遇到同样的问题时遇到了麻烦,并且没有阅读完整的消息。

确保您的构造器是公共的

地雷受到保护。希望可以节省别人的时间:)

相关问题