2009-06-07 41 views
5

我正在努力處理文檔以確定我需要的內容。無論如何,我的理解是1.5。有誰知道一個很好的指導,讓Ninject 2在ASP.NET MVC中工作?

注:我不希望延長NinjectHttpApplication

我已經配置它使用NinejctControllerFactory的Application_Start(),但我得到的KernelContainer.Kernel一個空引用異常當它試圖創建一個控制器。如果我不擴展NinjectHttpApplication,在哪裏配置內核?

+0

你不想擴展NinjectHttpApplication的原因是什麼? – 2009-06-17 17:48:00

+0

我已經擴展了另一個自定義HttpApplication – joshcomley 2009-06-17 19:44:53

回答

0

你仍然應該粘貼你的代碼,以便人們可以看到你可能出錯的地方。

我覺得這個代碼應放置在您的Application_Start:

ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory)); 
KernelContainer.Kernel = new StandardKernel(
    new AutoControllerModule(Assembly.GetExecutingAssembly(); 
); 
+0

我已經給了我的代碼很多,我迄今爲止所設置的控制器工廠。這似乎不值得一條線!此外,這是Ninject的v1版本。我對v2感興趣。 – joshcomley 2009-06-07 20:13:49

5

既然你已經延伸的另一HttpApplication的派生類,我的想法是剛剛從NinjectHttpApplication類複製相關的源代碼到您的擴展HttpApplication類中。而不是剪切和粘貼它,只需在Ninject2 Ninject.Web.Mvc擴展項目here中查看sourceNinjectHttpApplication

我將專門複製Application_Start()Application_Stop()方法的東西。註冊控制器的其他方法很好,但是您可以根據需要註冊控制器。您將在Application_Start()中注意到,內核是通過調用純虛函數CreateKernel()創建的 - 您可以簡單地在此處直接創建內核。此外,請注意NinjectHttpApplication類中的內核屬性的存在 - 我也將它複製到您自己的類中。看起來這裏的意圖是HttpApplication派生類有效地用作KernelContainer。

聲明:我還沒有嘗試過,看看它是否有效,但我很快就會。我在一個Web項目中使用了Ninject 1.x,並打算在不久的將來升級到Ninject 2;不過,我可能會直接從NinjectHtppApplication派生。祝你好運!

2

不能夠從N​​injectHttpApplication推導是不是一個大問題。它沒有太多,但它非常方便。彼得邁爾的建議是要走的路。請查看源文件here。儘管如此,你將不得不繼承IHaveKernel。

相關問題