Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 17081|Відповідь: 2

[ASP.NET] HttpContext.Current.Items

[Копіювати посилання]
Опубліковано 11.02.2018 10:42:10 | | | |

HTTP — це безстанний протокол. Кожен запит є незалежним, і його виконання та результати не пов'язані безпосередньо з попереднім і наступним запитом, і він не буде безпосередньо впливати на відповідь на попередній запит і не впливає безпосередньо на відповідь на наступний запит.

Насправді наша система часто підтримує користувачам обмін одними й тими ж даними (станом) між клієнтським браузером і сервером за кількома запитами, наприклад, інформацією про обліковий запис користувача. Тому ASP.NET надає багато змінних для керування станом: стан додатку, стан сесії, стан перегляду тощо.

Об'єкт HttpContext призначений лише для одного http-запиту.Властивості цього класу також включають об'єкти запиту, об'єкти відповіді, об'єкти сесії тощо. Це колекція Items класу 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