Как работает HttpContext.Current?

Дженкинс использует адрес электронной почты System Admin в качестве адреса отправителя для уведомления по электронной почте. Вы можете настроить это в разделе Управление Jenkins -> Configure System . Это находится на заголовке Jenkins Location на этой странице! Не сразу становится очевидным, что этот параметр привязан к настройкам уведомлений по электронной почте, поскольку он не находится в заголовке E-mail уведомления на странице конфигурации.

16
задан Micah 5 August 2010 в 16:30
поделиться

2 ответа

Current не является статической переменной, ее статическое свойство и свойство get - не что иное, как статический метод, который возвращает текущий контекст.

ASP.NET хранит некоторую информацию с текущим потоком, вы всегда можете получить локальное хранилище потока для хранения информации, которая является статической только в текущем потоке и может быть доступна любым методом только в текущем потоке.

Таким образом, ASP.NET хранит некоторую локальную информацию в потоке, в котором контекст http выполняет запрошенное приложение, и из любого места вызов Current будет извлекать данные локального потока и получать необходимую информацию.

Вы также можете посмотреть атрибут [ThreadStatic] , который работает почти аналогичным образом.

Обновление

Начиная с ASP.NET 4.5 и более поздних версий, текущий HttpContext передается через CallContext вместо [ThreadStatic] , поэтому контекст остается доступным через out асинхронные вызовы в едином логическом контексте вместо текущего потока, поскольку каждый асинхронный вызов может завершаться в разных потоках.

19
ответ дан 30 November 2019 в 21:02
поделиться

Вы должны прочитать это сообщение в блоге:

http://odetocode.com/Articles/112.aspx

Раздел, который начинается со следующего, должен вас заинтересовать. Это длинно, иначе я бы процитировал его побольше:

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

10
ответ дан 30 November 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: