4

Ninject.Web(v3)をインストールしてWebFormsアプリケーションを起動しようとすると、次のエラーが発生します。

「静的コンテナにはすでにカーネルが関連付けられています!」

NinjectHttpApplicationを継承し、次の形式のモジュールでCreateKernel()をオーバーライドするGlobal.asaxにNinjectを実装しています

public class NinjectWebModule: NinjectModule
    {
        public override void Load()
        {
            Bind<IBlah>().To<Blah>();
        }
    }

基本的に、含まれているセットアップのアドバイスに従いました。asp.netWebフォームにNinjectまたはDIを実装するにはどうすればよいですか?

痛みの黄色い画面は言う

[NotSupportedException: The static container already has a kernel associated with it!]
   Ninject.Web.KernelContainer.set_Kernel(IKernel value) in c:\Projects\Ninject\ninject.web\src\Ninject.Web\KernelContainer.cs:38
   Ninject.Web.NinjectWebHttpApplicationPlugin.Start() in c:\Projects\Ninject\ninject.web\src\Ninject.Web\NinjectWebHttpApplicationPlugin.cs:62
   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
   Ninject.Web.Common.NinjectHttpApplication.Application_Start() in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\NinjectHttpApplication.cs:80

[HttpException (0x80004005): The static container already has a kernel associated with it!]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9859725
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): The static container already has a kernel associated with it!]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873912
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

何か案は?

4

1 に答える 1

6

ドー!Ninject.Web(v3)をインストールすると、NinjectWebCommon.csを含むApp_Startフォルダーが追加されます。

これは、Global.asaxではなく、バインディングを登録する場所です。

于 2012-11-27T15:59:49.513 に答える