2013-09-24 9 views
7

Używam MVC 4 i Ninject 3 z NinjectWebCommon w folderze App_Start."Błąd serwera w aplikacji"/"Sekwencja nie zawiera elementów" po naprawieniu przestrzeni nazw

A moja Global.asax.cs jest MvcApplication: HttpApplication

Otrzymuję błąd poniżej ponieważ Ninject zaczyna dwukrotnie - Dlaczego?

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 

Odpowiedz

34

Powodowało się to podczas refaktoryzacji przestrzeni nazw i nazwy binarnej.

Oznaczało to, że stara kopia biblioteki dll ze starą nazwą wciąż znajdowała się w folderze bin.

Co oznaczało, że obie biblioteki dll zostały aktywowane przy uruchomieniu.

A Wyczyść nie usunąłem go, więc usunąłem ręcznie i problem zniknął.

+2

Dziękuję bardzo za to. Jednak nie tylko musiałem usunąć foldery Bin, musiałem uruchomić czyszczenie dysku, aby uzyskać projekt internetowy do zbudowania; Zakładam, że używało starych plików w tymczasowym magazynie. – contactmatt

+1

Dziękuję bardzo człowieku .... to odgryzło mi głowę ... dziękuję bardzo ... – Shaz

+0

To samo dla mnie, miałem ten sam problem i żadne inne rozwiązanie nie działało. – brimble2010

0

Natknąłem się na tę kwestię i spędziłem kilka godzin próbując różnych zaleceń w Internecie. Rzeczą, która naprawiła to na końcu, było sprawdzenie odniesień kołowych między przestrzeniami nazw w moim projekcie. Zajrzyj do plików .csproj i sprawdź wszystkie odniesienia są poprawne.

0

Dla mnie przypadkowo zainstalowałem program Ninject w projekcie innym niż web, usunięcie go z projektu danych rozwiązało problem.

Powiązane problemy