I'm using MVC 4 and Ninject 3 with NinjectWebCommon in the App_Start folder.
我在App_Start文件夹中使用MVC 4和Ninject 3与NinjectWebCommon。
And my Global.asax.cs is MvcApplication : HttpApplication
我的Global.asax.cs是MvcApplication:HttpApplication
I'm getting the error below because the Ninject is starting twice - Why?
我收到下面的错误,因为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
3 个解决方案
#1
34
This was caused when I refactored the namespaces and binary name.
这是因为我重构了名称空间和二进制名称。
This meant that a old copy of the dll with the old name was still in the bin folder.
这意味着具有旧名称的旧版本的副本仍在bin文件夹中。
Which meant both dll's were being activated at start up.
这意味着两个dll都在启动时被激活。
A Clean did not remove it, so I deleted manually and the problem went away.
一个干净没有删除它,所以我手动删除,问题消失了。
#2
0
I came across this issue and spent a couple hours trying various recommendations on the internet. The thing which fixed it in the end was to check for circular references across namespaces in my project. Have a look at your .csproj files and check all the references are correct
我遇到了这个问题,并花了几个小时在互联网上尝试各种建议。最后修复它的是检查项目中名称空间的循环引用。查看您的.csproj文件并检查所有引用是否正确
#3
0
For me i'd accidentally installed ninject into a non web project, removing it from my data project solved the issue for me.
对我来说,我不小心将ninject安装到非web项目中,从我的数据项目中删除它解决了我的问题。
#1
34
This was caused when I refactored the namespaces and binary name.
这是因为我重构了名称空间和二进制名称。
This meant that a old copy of the dll with the old name was still in the bin folder.
这意味着具有旧名称的旧版本的副本仍在bin文件夹中。
Which meant both dll's were being activated at start up.
这意味着两个dll都在启动时被激活。
A Clean did not remove it, so I deleted manually and the problem went away.
一个干净没有删除它,所以我手动删除,问题消失了。
#2
0
I came across this issue and spent a couple hours trying various recommendations on the internet. The thing which fixed it in the end was to check for circular references across namespaces in my project. Have a look at your .csproj files and check all the references are correct
我遇到了这个问题,并花了几个小时在互联网上尝试各种建议。最后修复它的是检查项目中名称空间的循环引用。查看您的.csproj文件并检查所有引用是否正确
#3
0
For me i'd accidentally installed ninject into a non web project, removing it from my data project solved the issue for me.
对我来说,我不小心将ninject安装到非web项目中,从我的数据项目中删除它解决了我的问题。