我在Global.ascx中綁定了DonorContext類的一個對象(它來源於EntityFramework的DbContext),如下所示。在Ninject中處理綁定對象
kernel.Bind<DonorContext>().ToSelf().InRequestScope().OnDeactivation(DisposeDonorContext);
我期待在請求結束時,Ninject會調用DisposeDonorContext方法。但它永遠不會被調用。
我可以從網上收集的是IDisposible類型的對象在超出範圍時會自動獲取其Dispose方法。這不是在我的情況發生,因此我正在嘗試OnDeactivation()來處置DonorContext(這也不會發生)。
任何想法爲什麼處置不會發生?
達林,其實我在我的控制器注入服務層對象UserManager。這個UserManager對象包含DonorContext依賴。我正在使用[Inject]屬性來注入依賴關係。 UserManager的作用域是默認的ninject範圍。我確信DonorContext對象被創建並注入我的服務層,因爲我正在使用它來加載正確發生的數據。 – Jatin
達林,我剛剛安裝了Ninject.MVC3軟件包,現在我可以看到OnDeactivation()調用我的方法。謝謝你的幫助。 – Jatin
+1,一切都是真實和正確的,但只是想明確表示它是Ninject的System.Web集成體現在Ninject.MVC3中,它將這種情況聯繫起來 - 捕獲Ninject中的所有處理都是GC觸發的緩存和收集機制,根據您的託管上下文可能會導致OP的觀察到的問題重新取消激活不直接發生在ASP.NET處理週期的適當位置 –