我有我的MVC應用程序與Ninject和NHibernate配置。我有一些請求進來,他們所做的只是排隊工作,啓動一個線程來處理隊列,然後返回。Ninject請求範圍和衍生線程
我有我的NHibernate會話設置爲ReqeustScope。現在我的問題是,請求結束後,Ninject會立即終止Session對象嗎?或者它會保留它產生的線程?
我有我的MVC應用程序與Ninject和NHibernate配置。我有一些請求進來,他們所做的只是排隊工作,啓動一個線程來處理隊列,然後返回。Ninject請求範圍和衍生線程
我有我的NHibernate會話設置爲ReqeustScope。現在我的問題是,請求結束後,Ninject會立即終止Session對象嗎?或者它會保留它產生的線程?
我對NInject不是很熟悉,但是如果它像其他DI容器一樣工作,我希望一旦請求終止,你的會話就不可用。如果您需要在同一個應用程序域中運行後臺進程,您可能會考慮提供兩條解決ISessions的途徑,一條使用ThreadScope供後臺線程訪問,另一條使用RequestScope作爲應用程序的Web部分。如果您需要將使用Web會話檢索的實體傳遞到後臺線程,請務必小心。
如果您可以將後臺進程拆分到另一個應用程序域,您還可以創建一個自定義作用域來檢查HttpContext,然後決定使用哪個作用域。
答案是肯定的,Ninject會在HttpContext被垃圾收集後的某個時候嘗試關閉會話對象。看到這篇博文:
http://kohari.org/2009/03/06/cache-and-collect-lifecycle-management-in-ninject-20/