asp.net-mvc-3 - Ninject + MVC3 = InvalidOperationException : Sequence contains no elements

标签 asp.net-mvc-3 ninject

我创建了一个新的 MVC3 项目,按 F5,看到了示例页面。

然后我使用 NuGet 获取 Ninject.MVC extension 。我根据Ninject文档修改了我的global.asax,How To Setup an MVC3 Application :

public class MvcApplication : NinjectHttpApplication
{
   public static void RegisterGlobalFilters(GlobalFilterCollection filters)
   {
       filters.Add(new HandleErrorAttribute());
   }

   public static void RegisterRoutes(RouteCollection routes)
   {
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

       routes.MapRoute(
           "Default", // Route name
           "{controller}/{action}/{id}", // URL with parameters
           new { controller = "Home", action = "Index", 
               id = UrlParameter.Optional });
   }

   protected override IKernel CreateKernel()
   {
       var kernel = new StandardKernel();
       kernel.Load(Assembly.GetExecutingAssembly());
       return kernel;
   }

   protected override void OnApplicationStarted()
   {
       base.OnApplicationStarted();

       AreaRegistration.RegisterAllAreas();
       RegisterGlobalFilters(GlobalFilters.Filters);
       RegisterRoutes(RouteTable.Routes);
   }
}

现在,当我运行该应用程序时,我会出现蓝屏死机,但出现以下异常:

InvalidOperationException - Sequence contains no elements.

at System.Linq.Enumerable.Single(...)

at Ninject.Web.Mvc.Bootstrapper.Initialize(...) line 67.

果然,line 67 of that file调用 .Single(),从而抛出异常。

我做错了什么?

最佳答案

我必须补充这一点,希望其他人能够更快地解决问题,而不是像我一样想拔掉他们头上的每一根头发。

我需要重命名项目中的所有内容以匹配新的业务术语。我更改了各处的命名空间,甚至更改了程序集名称(右键单击项目 > 属性 > 应用程序选项卡),以便生成的程序集符合新的命名约定。程序集重命名让 Ninject 非常生气!

通过重命名生成的程序集,我们在编译时会创建一个具有新名称的新文件。然而,旧名称的旧文件仍然在bin目录中!如果您通过 App_Start 中添加的类激活 Ninject,则该激活类将在两个程序集中调用(旧程序集和新重命名程序集)。不要问我如何或为什么,但它确实如此,并且它给你这个“已经初始化”的错误。

甚至清理解决方案都不起作用,因为 Visual Studio 只会删除它生成的二进制文件,这将是新重命名的二进制文件。它让旧的独自坐在那里。

在尝试执行其他操作之前先删除 bin 文件夹!我希望这可以避免其他人浪费宝贵的工作时间!

关于asp.net-mvc-3 - Ninject + MVC3 = InvalidOperationException : Sequence contains no elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160946/

相关文章:

c# - 在 ASP.NET MVC 中执行异步操作使用来自 .NET 4 上的 ThreadPool 的线程

asp.net-mvc - Ninject.MVC3,将 DependencyResolver 传递给服务层?

c# - 使用 Ninject,我可以在不公开具体类的情况下从接口(interface)创建实例吗?

entity-framework - 如何通过 Ninject 获取 UnitOfWork 中的 DbContext 实例?

.net - ASP.NET MVC 期望 DateTime 采用什么格式,以便模型绑定(bind)能够正常工作?

visual-studio-2010 - 由于 obj 文件夹中的 web.config,MVC3 项目构建失败

javascript - 复选框总是返回 false

javascript - 页面加载时地理位置将值传递给 url.action

c# - Ninject:仅按名称解决依赖关系

c# - 如何为 Ninject 创建最小起订量供应商?