Да, вполне безопасно. HttContext.Current получит текущий HttpContext из потока, который выполняется.
Это распространенный метод, который избавляет вас от необходимости передавать объект контекста, как "Tramp data".
HTTPContext.Current статичен, поэтому тот факт, что вы вызываете его из статического метода, не имеет значения. Важно то, что HTTPContext.Current реализован таким образом, что он возвращает HTTP-контекст текущего потока , если он существует.
Непонятно, что именно вы подразумеваете под потокобезопасностью. Да, HttpContext.Current
возвращает объект HttpContext
, связанный с текущим потоком. Обратите внимание, что если вы вызываете функцию в потоке, кроме того, который в настоящее время обрабатывает запрос (например, в вызове асинхронной функции), вы не сможете получить доступ к желаемому объекту HttpContext
.
Другой подход - передать объект контекста в качестве аргумента функции.