Current не является статической переменной, ее статическое свойство, а свойство get - это не что иное, как статический метод, который возвращает текущий контекст.
ASP.NET хранит некоторую информацию с текущим потоком, вы всегда можете получитьлокальное хранилище потоков для хранения информации, которая является статической только в текущем потоке, и которая может быть доступна любым методом только в текущем потоке.
Таким образом, ASP.NET хранит некоторую локальную информацию в потоке, в которомhttp-контекст выполняет запрошенное приложение, и из любого места вызов Current будет извлекать данные локального потока и получать необходимую информацию.
Вы также можете посмотреть атрибут [ThreadStatic]
, который делает вещи почти аналогичным образом.
Обновление
В ASP.NET 4.5 и более поздних версиях Current HttpContext
пропускается через CallContext
вместо [ThreadStatic]
, поэтому контекст остается доступным через асинхронные вызовы в одном логическомконтекст вместо текущего потока, поскольку каждый асинхронный вызов может заканчиваться в разных потоках.