2013-09-24 15 views
7

Sto utilizzando MVC 4 e Ninject 3 con NinjectWebCommon nella cartella App_Start."Errore server in '/' Applicazione. La sequenza non contiene elementi" dopo aver refactoring namespace

E la mia Global.asax.cs è MvcApplication: HttpApplication

sto ottenendo l'errore sotto perché il Ninject sta cominciando due volte - Perché?

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 

risposta

34

Questo è stato causato quando ho refactored gli spazi dei nomi e il nome binario.

Ciò significava che una vecchia copia della dll con il vecchio nome era ancora nella cartella bin.

Il che significava che entrambi i dll venivano attivati ​​all'avvio.

A Clean non lo ha rimosso, quindi ho eliminato manualmente e il problema è andato via.

+2

Grazie mille per questo. Tuttavia, non solo ho dovuto rimuovere le cartelle Bin, ho dovuto eseguire una pulizia del disco per ottenere la realizzazione del progetto web; Presumo che stia usando vecchi file nella memoria temporanea. – contactmatt

+1

Grazie mille amico .... mi stava mordendo la testa .... grazie mille ... – Shaz

+0

Lo stesso per me, ho avuto lo stesso problema e nessun'altra soluzione ha funzionato. – brimble2010

0

Mi sono imbattuto in questo problema e ho trascorso un paio d'ore a provare varie raccomandazioni su Internet. La cosa che lo ha risolto alla fine è stata la ricerca di riferimenti circolari su namespace nel mio progetto. Dai un'occhiata ai tuoi file .csproj e verifica che tutti i riferimenti siano corretti

0

Per me ho accidentalmente installato ninject in un progetto non web, la rimozione dal mio progetto di dati ha risolto il problema per me.

Problemi correlati