Ответ 1
Да, его вполне безопасно. HttContext.Current будет получать текущий HttpContext из потока, который выполняется.
Его общий метод и избавляет вас от необходимости передавать объект контекста, как "данные Tramp".
У меня есть статический метод внутри статического класса. Мой вопрос заключается в том, можно ли использовать HttpContext.Current.Response внутри статического метода? Я хочу быть на 100% уверенным, что он потокобезопасен и связан только с вызывающим потоком. Кто-нибудь знает ответ?
public static void SetCookie(string cookieName, string cookieVal, System.TimeSpan ts)
{
try
{
HttpCookie cookie =
new HttpCookie(CookiePrefix + cookieName)
{Value = cookieVal, Expires = DateTime.Now.Add(ts)};
HttpContext.Current.Response.Cookies.Add(cookie);
}
catch (Exception)
{
return;
}
}
Да, его вполне безопасно. HttContext.Current будет получать текущий HttpContext из потока, который выполняется.
Его общий метод и избавляет вас от необходимости передавать объект контекста, как "данные Tramp".
HTTPContext.Current является статическим, поэтому тот факт, что вы вызываете его из статического метода, не имеет значения. Важно то, что HTTPContext.Current реализован таким образом, что он возвращает HTTP-контекст текущего потока, если он существует.
Не ясно, что именно вы подразумеваете под потоковой безопасностью. Да, HttpContext.Current
возвращает объект HttpContext
, связанный с текущим потоком. Обратите внимание: если вы вызываете функцию в потоке, кроме той, которая обрабатывает данный запрос (например, при вызове функции async), вы не сможете получить доступ к объекту HttpContext
, который вы хотите.
Другой подход заключается в том, чтобы объект контекста передавался как аргумент вашей функции.