У меня есть сайт ASP.NET, и я выполняю некоторую работу по рефакторингу кода, чтобы попытаться удалить некоторые долго выполняющиеся процессы (порядка часа) из фактического HTTP-запроса, создав BackgroundWorker и отправив работу чтобы обрабатывать. Это работало нормально на урезанных тестах, но когда я применил логику к реальному коду, я обнаружил проблемы с доступом к переменным Session из кода, работающего в Background Worker. Похоже, что переданный объект HttpContext имеет нулевой сеанс, и если я запрашиваю HttpContext.Current, я получаю нулевое значение обратно.
Я предполагаю, что это потому, что они находятся в другом потоке, и что сессия и HttpContext.Current зависят от того, находятся ли они в одном потоке. Есть ли какой-нибудь способ получить доступ к сеансу от фонового работника, или я застрял в поиске всех переменных, которые мне нужны из сеанса, и помещении их в пригодную для использования структуру данных и последующем их последующем возвращении в сеанс (при необходимости)? Очевидно, это сильно усложняет рефакторинг, если мне нужно сделать это, поэтому я бы предпочел не делать этого.
Спасибо за любые ваши мысли. Я открыт для других предложений о том, как я могу сделать это, кроме процессов BackgroundWorker (которые были предложены мне в другом вопросе).