2011-06-08 99 views
2

我有我的MVC应用程序与Ninject和NHibernate配置。我有一些请求进来,他们所做的只是排队工作,启动一个线程来处理队列,然后返回。Ninject请求范围和衍生线程

我有我的NHibernate会话设置为ReqeustScope。现在我的问题是,请求结束后,Ninject会立即终止Session对象吗?或者它会保留它产生的线程?

回答

2

我对NInject不是很熟悉,但是如果它像其他DI容器一样工作,我希望一旦请求终止,你的会话就不可用。如果您需要在同一个应用程序域中运行后台进程,您可能会考虑提供两条解决ISessions的途径,一条使用ThreadScope供后台线程访问,另一条使用RequestScope作为应用程序的Web部分。如果您需要将使用Web会话检索的实体传递到后台线程,请务必小心。

如果您可以将后台进程拆分到另一个应用程序域,您还可以创建一个自定义作用域来检查HttpContext,然后决定使用哪个作用域。