我有一个ASP.NETsite和我一直在做一些重构代码的工作,试图通过创建BackgroundWorker并将工作发送给那个进程,从实际的http请求中删除一些长时间运行的进程(大约一个小时)。这在缩减测试中运行得很好,但是当我将逻辑应用到实际代码时,我发现从后台工作程序中运行的代码访问会话变量时出现了问题。似乎传递的HttpContext对象有一个空会话,如果我请求HttpContext.当前我回来了。
  
  
   我假设这是因为它们在不同的线程中,会话和HttpContext.当前两者都依赖于处于同一线程中。有没有什么方法可以让我从后台工作人员访问会话,或者我只能从会话中找到所有需要的变量,并将它们放入可用的数据结构中,然后再将它们放回会话(如果合适的话)?如果我需要这样做的话,显然会使重构复杂化,所以我宁愿不这样做。
  
  
   谢谢你的任何想法。除了后台工作流程(这是在另一个问题中向我提出的)之外,我愿意接受其他关于如何做到这一点的建议。