ASP.NET中后台工作线程的会话状态可用性

时间:2011-11-16 00:12:36

标签: asp.net multithreading asp.net-mvc-3

我想从客户端AJAX请求启动后台工作线程。因此请求立即返回,后台线程处理该处理。会话状态是否可用于此后台线程?

2 个答案:

答案 0 :(得分:2)

是 - 如果您的后台线程在与ASP.NET站点相同的AppDomain中运行。 HttpContext.Current.Session会让您访问它。当然忽略了如何最好地处理Web应用程序中的多线程的整个主题,如何最好地处理将依赖关系注入后端代码(无论是控制器还是其他一些技术)以实现可测试性,这将使您获得最快和最脏的

答案 1 :(得分:0)

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