“/'应用程序中的服务器错误。序列不包含任何元素”在重构命名空间后

“/'应用程序中的服务器错误。序列不包含任何元素”在重构命名空间后

问题描述:

我在App_Start文件夹中使用MVC 4和Ninject 3与NinjectWebCommon。“/'应用程序中的服务器错误。序列不包含任何元素”在重构命名空间后

而我的Global.asax.cs是MvcApplication:一个HttpApplication

我得到下面,因为Ninject开始两次错误 - 为什么?

Server Error in '/' Application. 

Sequence contains no elements 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Sequence contains no elements 

Source Error: 


Line 50:    kernelInstance = createKernelCallback(); 
Line 51: 
Line 52:    kernelInstance.Components.GetAll<INinjectHttpApplicationPlugin>().Map(c => c.Start()); 
Line 53:    kernelInstance.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); 
Line 54:    kernelInstance.Inject(this); 

Source File: c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs Line: 52 

Stack Trace: 


[InvalidOperationException: Sequence contains no elements] 
    System.Linq.Enumerable.Single(IEnumerable`1 source) +315 
    Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start() in c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectMvcHttpApplicationPlugin.cs:53 
    Ninject.Web.Common.Bootstrapper.<Initialize>b__0(INinjectHttpApplicationPlugin c) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs:52 
    Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable`1 series, Action`1 action) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:32 
    Ninject.Web.Common.Bootstrapper.Initialize(Func`1 createKernelCallback) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs:52 
    Company.App.App_Start.NinjectWebCommon.Start() in c:\Development\Company\trunk\src\App\App_Start\NinjectWebCommon.cs:29 

[TargetInvocationException: Exception has been thrown by the target of an invocation.] 
    System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0 
    System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +192 
    System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +108 
    System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +19 
    WebActivator.BaseActivationMethodAttribute.InvokeMethod() +236 
    WebActivator.ActivationManager.RunActivationMethods() +534 
    WebActivator.ActivationManager.RunPreStartMethods() +41 
    WebActivator.ActivationManager.Run() +64 

[InvalidOperationException: The pre-application start initialization method Run on type WebActivator.ActivationManager threw an exception with the following error message: Exception has been thrown by the target of an invocation..] 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +550 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +90 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +135 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516 

[HttpException (0x80004005): The pre-application start initialization method Run on type WebActivator.ActivationManager threw an exception with the following error message: Exception has been thrown by the target of an invocation..] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9874568 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18044 

这是在重构名称空间和二进制名称时引起的。

这意味着旧名称的dll的旧副本仍在bin文件夹中。

这意味着这两个DLL的启动时被激活。

A Clean没有删除它,所以我手动删除,问题就消失了。

+2

非常感谢你。但是,我不仅需要删除Bin文件夹,还必须运行磁盘清理工具才能构建Web项目;我认为它是在临时存储中使用旧文件。 – contactmatt

+1

非常感谢你......这让我感到非常兴奋......非常感谢你...... – Shaz

+0

对我来说也是一样,我遇到了同样的问题,没有其他的解决方案。 – brimble2010

我遇到过这个问题,花了几个小时尝试在互联网上的各种建议。最终修复它的事情是在我的项目中检查命名空间中的循环引用。看看你的.csproj文件,并检查所有的引用是否正确

对我来说,我不小心安装ninject到一个非web项目,从我的数据项目中删除它解决了我的问题。