2011-11-16 41 views

回答

2

是 - 如果后台线程与ASP.NET站点在同一AppDomain中运行。 HttpContext.Current.Session会让你访问它。当然,忽略如何最好地处理Web应用程序中的多线程的整个话题,如何最好地处理注入依赖到您的后端代码(无论是控制器还是其他一些技术)来进行可测试性,这会让您在那里最快,最肮脏。

0

现在我正在写这个答案,会话在其他正在处理当前请求的线程中不可用。 如果没有任何请求,当前属性HttpContext为空。 但是,如果在该后台线程中,您在接收到请求后正在使用会话,则该请求处于活动状态并且尚未完成时可用。 可能有更好的解决方案为您的要求。 任何方式,如果你必须使用后台线程,访问会话不是唯一的问题,你遇到。您应该考虑可能发生的故障情况,并注意您的应用程序未进入不适当的状态。例如,IIS可能会回收AppDomain(尽管这个几乎可以由HostingEnvironment.RegisterObject处理)