Доступность состояния сеанса для фоновых рабочих потоков в ASP.NET - PullRequest
2 голосов
/ 16 ноября 2011

Я хочу запустить фоновый рабочий поток из клиентского AJAX-запроса.Таким образом, запрос немедленно возвращается, и фоновый поток обрабатывает обработку.Доступно ли состояние сеанса этому фоновому потоку?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Да - если фоновый поток работает в том же домене приложений, что и сайт ASP.NET. HttpContext.Current.Session даст вам доступ к нему. Игнорирование, конечно, целой темы о том, как лучше всего справляться с многопоточностью в веб-приложениях, как лучше всего обрабатывать внедрение зависимостей в ваш внутренний код (будь то контроллер или какая-либо другая технология) для тестирования, это поможет вам быстрее и грязнее .

0 голосов
/ 12 июля 2014

Теперь, когда я пишу этот ответ, сеанс недоступен в потоке, отличном от того, который обрабатывает текущий запрос. Если нет никакого запроса, Текущее свойство HttpContext равно нулю. Но если в этом фоновом потоке вы используете сеанс после получения запроса, он доступен, пока запрос активен и еще не завершен. Там может быть лучшее решение для вашего требования. В любом случае, если вам необходимо использовать фоновый поток, доступ к сеансу - не единственная проблема, с которой вы сталкиваетесь. Вы должны учитывать ситуации с ошибками, которые могут возникнуть у вас, и быть осторожным, чтобы ваше приложение не перешло в неподходящее состояние. Например, IIS может перезапустить AppDomain (хотя HostingEnvironment.RegisterObject может почти обработать этот)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...