2011-06-08 102 views
2

我有我的MVC應用程序與Ninject和NHibernate配置。我有一些請求進來,他們所做的只是排隊工作,啓動一個線程來處理隊列,然後返回。Ninject請求範圍和衍生線程

我有我的NHibernate會話設置爲ReqeustScope。現在我的問題是,請求結束後,Ninject會立即終止Session對象嗎?或者它會保留它產生的線程?

回答

2

我對NInject不是很熟悉,但是如果它像其他DI容器一樣工作,我希望一旦請求終止,你的會話就不可用。如果您需要在同一個應用程序域中運行後臺進程,您可能會考慮提供兩條解決ISessions的途徑,一條使用ThreadScope供後臺線程訪問,另一條使用RequestScope作爲應用程序的Web部分。如果您需要將使用Web會話檢索的實體傳遞到後臺線程,請務必小心。

如果您可以將後臺進程拆分到另一個應用程序域,您還可以創建一個自定義作用域來檢查HttpContext,然後決定使用哪個作用域。