Что означает слово HttpContext в .ashx? Давай поговорим с тобой об этом
Класс HttpContext: Инкапсулирует всю специфическую для HTTP информацию о отдельных HTTP-запросах.
На каждом этапе цепочки выполнения запросов обработки существует объект, проходящий между объектами, то есть хранится контекстная информация запроса — объект HttpContext. HttpContext инкапсулирует всю информацию ASP.NET одного запроса для обработки. Когда механизм обработки запросов установлен, класс HttpContext инстанцируется с помощью объекта HttpRuntime, который затем проходит различные этапы жизни запроса
Введение в HttpContext: Сохраняйте данные для одного пользователя, одного запроса, и данные сохраняются только на время действия этого запроса. предоставляется для поддержания значений, которые необходимо передавать между разными HttpModules и HttpHandlers. Он также может использоваться для поддержания соответствующей информации для полного запроса.
Свойство Current — это полезный статический элемент, который возвращает запрошенный объект HttpContex. Элементы — это хеш-таблицы, которые обмениваются данными между модулями и обработчиками, участвующими в обработке запросов. Каждый пользовательский модуль или обработчик может добавлять собственную информацию к запрашиваемому объекту HttpContext, и информация, хранящаяся в элементах, в конечном итоге используется страницей, но доступна к ней только во время выполнения запроса HttpContext Определение: Инкапсулирует всю HTTP-специфическую информацию о отдельных HTTP-запросах.
Фактически, в нём находится Http-запрос и вся возвращаемая информация.
HttpContext происходит из System.Runtime.Remoting.Messaging.CallContext.HostContext. Это определение HostContext предназначено для получения или установки хост-контекста, связанного с текущим потоком (поэтому HttpContext может использоваться только в потоке текущего запроса). )
HttpContext фактически хранится в свойстве CallContext.HostContextЕсли вам всё ещё интересно узнать о HostContext, вы можете увидеть его сами с помощью Reflector.exe, я не хочу публиковать больше кода, потому что некоторые типы и методы не являются публичными.
HttpContext.Current.Items можно использовать при обмене данными между HttpModule и HTTPHandler, поскольку каждый пользовательский запрос проходит через HTTP-конвейер HttpModule, HTTPHandler. Когда вы реализуете метод IHttpMoudle для передачи информации пользовательскому запросу через HttpMoudle. Вы можете использовать HttpContext.Current.Items для передачи данных на разных страницах запросов и различных HttpModule, но как только запрос заканчивается и данные будут размещены, данные из этой коллекции будут потеряны сами по себе.
Например, каждый раз, когда мы делаем запрос, мы хотим использовать один и тот же контекстный объект DbContext в ef, и код выглядит следующим образом:
|