我正在努力處理文檔以確定我需要的內容。無論如何,我的理解是1.5。有誰知道一個很好的指導,讓Ninject 2在ASP.NET MVC中工作?
注:我不希望延長NinjectHttpApplication
我已經配置它使用NinejctControllerFactory在的Application_Start(),但我得到的KernelContainer.Kernel一個空引用異常當它試圖創建一個控制器。如果我不擴展NinjectHttpApplication,在哪裏配置內核?
我正在努力處理文檔以確定我需要的內容。無論如何,我的理解是1.5。有誰知道一個很好的指導,讓Ninject 2在ASP.NET MVC中工作?
注:我不希望延長NinjectHttpApplication
我已經配置它使用NinejctControllerFactory在的Application_Start(),但我得到的KernelContainer.Kernel一個空引用異常當它試圖創建一個控制器。如果我不擴展NinjectHttpApplication,在哪裏配置內核?
看看這篇博文。它應該有助於闡明您需要執行的關於如何配置內核的過程。
http://www.kevinrohrbaugh.com/blog/2009/8/7/using-ninject-2-with-aspnet-mvc.html
你仍然應該粘貼你的代碼,以便人們可以看到你可能出錯的地方。
我覺得這個代碼應放置在您的Application_Start:
ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory));
KernelContainer.Kernel = new StandardKernel(
new AutoControllerModule(Assembly.GetExecutingAssembly();
);
我已經給了我的代碼很多,我迄今爲止所設置的控制器工廠。這似乎不值得一條線!此外,這是Ninject的v1版本。我對v2感興趣。 – joshcomley 2009-06-07 20:13:49
既然你已經延伸的另一HttpApplication的派生類,我的想法是剛剛從NinjectHttpApplication類複製相關的源代碼到您的擴展HttpApplication類中。而不是剪切和粘貼它,只需在Ninject2 Ninject.Web.Mvc擴展項目here中查看source的NinjectHttpApplication。
我將專門複製Application_Start()和Application_Stop()方法的東西。註冊控制器的其他方法很好,但是您可以根據需要註冊控制器。您將在Application_Start()中注意到,內核是通過調用純虛函數CreateKernel()創建的 - 您可以簡單地在此處直接創建內核。此外,請注意NinjectHttpApplication類中的內核屬性的存在 - 我也將它複製到您自己的類中。看起來這裏的意圖是HttpApplication派生類有效地用作KernelContainer。
聲明:我還沒有嘗試過,看看它是否有效,但我很快就會。我在一個Web項目中使用了Ninject 1.x,並打算在不久的將來升級到Ninject 2;不過,我可能會直接從NinjectHtppApplication派生。祝你好運!
不能夠從NinjectHttpApplication推導是不是一個大問題。它沒有太多,但它非常方便。彼得邁爾的建議是要走的路。請查看源文件here。儘管如此,你將不得不繼承IHaveKernel。
你不想擴展NinjectHttpApplication的原因是什麼? – 2009-06-17 17:48:00
我已經擴展了另一個自定義HttpApplication – joshcomley 2009-06-17 19:44:53