2013-09-24 107 views
7

Tôi đang sử dụng MVC 4 và Ninject 3 với NinjectWebCommon trong thư mục App_Start."Lỗi máy chủ trong '/' Ứng dụng. Trình tự không chứa phần tử" sau khi tái cấu trúc không gian tên

Và Global.asax.cs của tôi là MvcApplication: HttpApplication

Tôi nhận được báo lỗi dưới đây vì Ninject đang bắt đầu hai lần - Tại sao?

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 

Trả lời

34

Điều này xảy ra khi tôi tái cấu trúc không gian tên và tên nhị phân.

Điều này có nghĩa là một bản sao cũ của dll có tên cũ vẫn còn trong thư mục bin.

Điều đó có nghĩa là cả hai dll đã được kích hoạt khi khởi động.

A Làm sạch không xóa nó, vì vậy tôi đã xóa thủ công và sự cố đã biến mất.

+2

Cảm ơn bạn rất nhiều vì điều này. Tuy nhiên, không chỉ có tôi phải loại bỏ các thư mục Bin, tôi đã phải chạy một đĩa sạch-up để có được dự án web để xây dựng; Tôi cho rằng nó đang sử dụng các tệp cũ trong bộ nhớ tạm thời. – contactmatt

+1

Cảm ơn bạn rất nhiều người đàn ông .... nó cắn đầu tôi .... cảm ơn bạn rất nhiều ... – Shaz

+0

Cùng với tôi, tôi đã có cùng một vấn đề và không có giải pháp khác làm việc. – brimble2010

0

Tôi đã xem xét vấn đề này và dành một vài giờ để thử các đề xuất khác nhau trên internet. Thứ cố định cuối cùng là kiểm tra các tham chiếu vòng tròn qua các không gian tên trong dự án của tôi. Hãy xem các tệp .csproj của bạn và kiểm tra tất cả các tham chiếu là chính xác

0

Đối với tôi, tôi đã vô tình cài đặt ninject vào một dự án không phải web, việc xóa nó khỏi dự án dữ liệu của tôi đã giải quyết được vấn đề cho tôi.