Не удается получить доступ к HttpContext.Current при использовании потока - PullRequest
0 голосов
/ 21 марта 2020
Thread sendEmails = new Thread(() => AnnounceAllEmployee(Requisition_num));
sendEmails.Start();

Когда я получаю доступ к методу, который использует: var httpContext = HttpContext.Current; в моем коде, я получаю сообщение об ошибке HttpContext.Current имеет значение null Я пытался получить доступ к нему внутри потока, но все равно получаю сообщение об ошибке, что он равен NULL .

1 Ответ

0 голосов
/ 21 марта 2020

HttpContext.Current доступен только для основного потока, новый поток, который создается из контроллера, будет иметь другой контекст.

Что вы можете сделать, это передать его в качестве параметра.

Вам потребуется изменить AnnounceAllEmployee для обработки нового параметра HttpContext; AnnounceAllEmployee(... , HttpContext hc)

   HttpContext httpContext = HttpContext.Current;
   Thread sendEmails = new Thread(() => AnnounceAllEmployee(Requisition_num, httpContext));

Это не приведет к клонированию http-контекста, а передаст его только по ссылке, следовательно, он не будет занимать больше памяти.

EDIT: кажется, что после выполнения запроса поскольку он передается по ссылке, httpcontext основного потока, к которому мы пытаемся получить доступ, вернет null для некоторых свойств.

...