2011-08-02 37 views
34

有幾個關於ninject最新版本(2.2.1.4)的問題。Ninject InRequestScope missing

試圖綁定LINQ2SQL DataContext到具體實施InRequestScope(在類庫項目)

Bind<DataContext>().To<MoneywatchDataContext>() 

,但無法找到InRequestScope方法

enter image description here

弄成這樣,

Bind<DataContext>().To<MoneywatchDataContext>().InScope(ctx => HttpContext.Current) 

只是想看看:

  1. 如果這會表現酷似InRequestScope方法。
  2. 這將保證,當我的HTTContext.Current被GC'ed時,潛在的DataCotext也將被處置。

回答

22

很有可能你參考了一個沒有網絡版本的Ninject。將其替換爲普通版本,您將擁有InRequestScope擴展方法。

45

InRequestScope在Ninject.Web.Common中可用作擴展方法。因此,如果通過的NuGet(Ninject包)之前安裝,現在我們可能需要安裝額外的NuGet包Ninject.Web.Common

+0

Remeber,你需要在你的模塊類將被配置項目安裝該軟件包。我遇到了一個問題,我已經將它安裝在MVC項目中,但是放置了'Bind <>()。到<>().InRequestScope();'的模塊位於Infrastucure項目中。我花了一段時間才意識到這一點。 – fabriciorissetto

31
using Ninject.Web.Common; // that's most likely all you need 
+5

這是幫助我的實際答案。 –

+0

也爲我工作。 – orourkedd

+0

(這將導入包含擴展方法的命名空間) –

相關問題