Що означає слово 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, і код виглядає так:
|