ASP.NET HttpContext.Current внутри Task.Run

У меня есть следующий пример кода, который используется в приложении ASP.NET MVC. Целью этого кода является создание запроса «запусти и забудь» для постановки в очередь какой-либо длительной операции.

public JsonResult SomeAction() {
   HttpContext ctx = HttpContext.Current;            

   Task.Run(() => {
       HttpContext.Current = ctx;
       //Other long running code here.
   });

   return Json("{ 'status': 'Work Queued' }");
}

Я знаю, что это не очень хороший способ обработки HttpContext.Current в асинхронном коде, но в настоящее время наша реализация не позволяет нам делать что-то еще. Я хотел бы понять, насколько этот код опасен ...

Вопрос: Теоретически возможно, что установка HttpContext внутри Task.Run, установит для контекста совершенно другой запрос?

Я думаю, что да, но я не уверен. Как я понимаю: Request1 обрабатывается с помощью Thread1 из пула потоков, а затем, когда Thread1 обрабатывает совершенно другой запрос (Request2), код внутри Task.Run устанавливает контекст из Request1 в Request2.

Может быть, я и ошибаюсь, но мои знания о внутренностях ASP.NET не позволяют мне правильно это понять.

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос