2014-12-25 33 views
1

相關的內核我有這個錯誤涉及到Ninject時部署到Azure中:靜態容器已經有它

The static container already has a kernel associated with it! 

但它在當地的正常工作。之前它一直在使用本地和Azure,我不記得最近發生了什麼變化(例如,我沒有獲得Ninject的更新版本)。我檢查了相關的帖子,但仍然無法解決我的問題。

下面是當部署到Azure的後錯誤頁:

Server Error in '/' Application. 

The static container already has a kernel associated with it! 

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.NotSupportedException: The static container already has a kernel associated with it! 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[NotSupportedException: The static container already has a kernel associated with it!] 
    Ninject.Web.KernelContainer.set_Kernel(IKernel value) +68 
    Ninject.Web.NinjectWebHttpApplicationPlugin.Start() +8 
    Ninject.Web.Common.Bootstrapper.<Initialize>b__0(INinjectHttpApplicationPlugin c) +8 
    Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable`1 series, Action`1 action) +130 
    Ninject.Web.Common.Bootstrapper.Initialize(Func`1 createKernelCallback) +140 
    AlamomiAdmin.App_Start.NinjectWebCommon.Start() in c:\a\src\AlamomiUniverse\AlamomiAdmin\App_Start\NinjectWebCommon.cs:26 

[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) +155 
    WebActivatorEx.BaseActivationMethodAttribute.InvokeMethod() +57 
    WebActivatorEx.ActivationManager.RunActivationMethods(Boolean designerMode) +350 
    WebActivatorEx.ActivationManager.Run() +78 

[InvalidOperationException: The pre-application start initialization method Run on type WebActivatorEx.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) +547 
    System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132 
    System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +102 
    System.Web.Compilation.BuildManager.ExecutePreAppStart() +153 
    System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521 

[HttpException (0x80004005): The pre-application start initialization method Run on type WebActivatorEx.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) +9930568 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 

回答

1

我已經被這個沮喪了一個星期。今天我找到了解決方案。我認爲必須有兩個重複的Ninject.dll/Ninject.Web.dll或Ninject在Azure中的任何dll文件。所以我必須在部署之前刪除Azure中的所有現有文件。我從Visual Studio部署。

所以這就是我所做的。在Visual Studio中,右鍵單擊項目,然後選擇「發佈...」。在彈出窗口的「設置」下,選中名爲「在目的地刪除其他文件」的複選框。再次部署。

現在它成功了。