Скважина:
HttpContext.Current
- это свойство static , возвращающее текущий HttpContext
для потока HttpContext.Request
- это свойство instance , возвращающее HttpRequest
для HttpContext
, который вы вызываете для Page.Request
, - свойство экземплярав Page
, возвращая Request
, связанный со страницей, на которой вы ее вызываете (обычно неявно this
)
Так что HttpContext.Current.Request
будет использовать оба первых двух свойства, чтобы получитьзапрос, связанный с текущим потоком.Если вы в потоке, работающем с запросом, это будет то же самое, что и Page.Request
на соответствующей странице, которая обрабатывается.
Однако, если ваш рендеринг запускает другойВ потоке код, выполняющийся в другом потоке, все еще может получить значение Request
через Page.Request
(потому что это просто обычное свойство), но HttpContext
не будет связано с потоком - так что HttpContext.Current.Request
не будет работать.
РЕДАКТИРОВАТЬ: Чтобы ответить на отредактированный вопрос, в global.asax свойство Request
ссылается на HttpApplication.Request
и, вероятно, является лучшим подходом для использования.HttpContext.Request
не будет работать, потому что он пытается получить доступ к статическому свойству, как если бы оно было свойством экземпляра.HttpContext.Current.Request
должен работать, предполагая, что контекст связан с потоком этой точкой.