Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 17081|Ответ: 2

[ASP.NET] HttpContext.Current.Items

[Скопировать ссылку]
Опубликовано 11.02.2018 10:42:10 | | | |

HTTP — это протокол без состояния. Каждый запрос является независимым, его выполнение и результаты не связаны напрямую с предыдущим запросом и последующим, и не будут напрямую затронуты ответом на предыдущий запрос и не будут напрямую влиять на ответ на следующий запрос.

На самом деле, наша система часто поддерживает использование пользователей в обмене одними и теми же данными (состоянием) между клиентским браузером и сервером по множеству запросов, например, информации о аккаунте входа пользователя. Поэтому ASP.NET предоставляет множество переменных для управления состоянием: состояние приложения, состояние сессии, состояние просмотра и т.д.

Объект HttpContext предназначен только для одного http-запроса.Свойства этого класса также включают объекты запроса, объекты ответа, объекты сессии и др. Это коллекция элементов класса HttpContext, которая содержит объект хеш-таблицы в виде key-value.

Сначала рассмотрим назначение HttpContext.Current.Items, который работает только с одним пользовательским запросом (HttpContext.Current.Items действит для одного HTTPRequest). После завершения этого запроса коллекция элементов теряется, когда информация сервера возвращается в браузер. Объект Session предназначен для сессии пользователя, то есть он действует на несколько пользовательских запросов, и информация теряется после окончания сессии.

Поскольку у HttpContext.Current.Items такой короткий жизненный цикл, при каких обстоятельствах его можно использовать? Здесь отмечено, что HttpContext.Current.Items может использоваться при обмене данными между HttpModule и HTTPHandler, поскольку каждый пользовательский запрос проходит через HTTP-конвейер HttpModule, HTTPHandler. Когда вы реализуете метод IHttpMoudle для передачи информации пользовательскому запросу через HttpMoudle. Вы можете использовать HttpContext.Current.Items для передачи данных на разных страницах запросов и различных HttpModule, но как только запрос заканчивается и данные будут размещены, данные из этой коллекции будут потеряны сами по себе. Как показано на следующем рисунке:




Кроме того, при прыжке страницы сервера (Server.Execute/Server.Transfer) мы можем использовать HttpContext.Current.Items для передачи данных между двумя формами.
Очевидно, что если вы измените Server.Transfer на Response.Redirect, вы не сможете получить данные в HttpContext.Current.Items на новой странице, потому что это другой Http-запрос. System.NullReferenceException: Ссылка на объект не устанавливается на экземпляр объекта.





Предыдущий:20 минут до выпуска виртуальной валюты на основе сети Ethereum
Следующий:Размышления о сценариях использования и значении интеллектуальных терминалов
 Хозяин| Опубликовано 30.06.2023 20:35:38 |
ASP.NET разница между ThreadStatic, CallContext и HttpContext
https://www.itsvse.com/thread-10620-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com