【发布时间】:2010-08-19 15:44:58
【问题描述】:
我有一个 ASP.NET 站点,我一直在做一些重构代码的工作,试图通过创建 BackgroundWorker 并发送工作从实际的 http 请求中删除一些长时间运行的进程(大约一个小时)到那个处理。这在缩减测试中运行良好,但是当我将逻辑应用于实际代码时,我发现从后台工作程序中运行的代码访问 Session 变量时出现问题。似乎传递的 HttpContext 对象有一个空会话,如果我要求 HttpContext.Current,我会返回空。
我假设这是因为它们在不同的线程中,并且会话和 HttpContext.Current 都依赖于在同一个线程中。有什么方法可以让我从后台工作人员访问会话,还是我坚持从会话中找到我需要的所有变量并将它们放入可用的数据结构中,然后再将它们放回会话中(如果合适的话)?如果我需要这样做,这显然会使重构变得非常复杂,所以我宁愿不这样做。
感谢您的任何想法。除了 BackgroundWorker 进程(在另一个问题中向我建议)之外,我愿意接受有关如何执行此操作的其他建议。
【问题讨论】:
标签: asp.net session backgroundworker