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

Вид: 51405|Відповідь: 5

[ASP.NET] asp.net інтерфейс IHttpModule детально пояснюється

[Копіювати посилання]
Опубліковано 13.03.2018 21:46:06 | | | |
Написано спереду

Щодо відповідного змісту IHttpModule, мене також запитали під час співбесіди, і я приблизно відчув, що цей інтерфейс має метод Init, який може реєструвати низку подій із методом Init у класі реалізації. Вдома цими вихідними справді нічого не можна зробити, навіть якщо це перевірка і заповнення прогалин у цій частині знань.

IHttpModule працює

Друзі, які знайомі з asp.net життєвим циклом, повинні знати, що виконання HttpModule виконується до HttpHandler, після виконання серії подій HttpModule, потім виконання HttpHandler і виконання деяких подій HttpModule. Для деталей, будь ласка, зверніться до наступної діаграми життєвого циклу.



HttpHandler — це місце для обробки http-запиту, HttpModule — це «єдиний спосіб» для HTTP-запиту, тож ви можете додати необхідну інформацію поверх HTTP-запиту перед тим, як цей HTTP-запит буде переданий до справжнього центру обробки запитів (HttpHandler), або виконати додаткову роботу над перехопленою інформацією HTTP-запиту. Або в деяких випадках просто завершувати HTTP-запити, які відповідають певним умовам, що може слугувати фільтром.

HTTP-запит буде переданий контейнеру HttpHandler у певний момент (подія ResolveRequestCache) під час доставки контейнера HttpModule. Після цієї події контейнер HttpModule створює вхідний екземпляр HttpHandler, але замість того, щоб відмовитися від контролю над HTTP-запитом, він продовжує запускати події AcquireRequestState та PreRequestHandlerExcute. Після події PreRequestHandlerExcute вікно HttpModule тимчасово передає контроль контейнеру HttpHandler для обробки реальних HTTP-запитів.

У контейнері HttpHandler виконується метод ProcessRequest для обробки HTTP-запитів. Після того, як контейнер HttpHandler обробляє весь HTTP-запит, він повертає контроль HttpModule, який продовжує передавати оброблену інформацію про HTTP-запит шар за шаром, доки не повертається клієнту.

Приклад

Структура проєкту



Код MyHttpModule

Зареєструйте власний HttpModule у web.config

Перегляньте сторінку Default.aspx



Отже, який порядок виконання низки подій у життєвому циклі?


Перегляньте результати



Використовуйте HttpModule для завершення HTTP-запиту


результат



зведення

Тут ми представляємо найважливіший інтерфейс у життєвому циклі asp.net — IHttpModule, який можна описати як інтерфейс події, оскільки в методі Init класу реалізації можна зареєструвати різні події життєвого циклу та визначити різні логіки в події.





Попередній:Asp.Net IHttpHandler представлено
Наступний:C# повинен змінити цей обхідний шлях заголовка за допомогою відповідних атрибутів або методів
 Орендодавець| Опубліковано 13.03.2018 21:46:47 |
. NETFramework 4.5 надає 25 стандартних подій.


 Орендодавець| Опубліковано 13.03.2018 21:47:03 |
. NETFramework 4.0, який пропонує 19 стандартних подій.

1. BeginRequest: Перша подія asp.net, що починає обробку запиту, що означає початок обробки.

2. AuthenticateRequest: Запит на автентифікацію, зазвичай використовується для отримання інформації користувача запиту.

3. PostAuthenticateRequest: Запитана інформація користувача.

4. AuthorizeRequest: Авторизація, зазвичай використовується для перевірки, чи надано користувачу дозвіл.

5. PostAuthorizeRequest: Запит користувача авторизовано.

6. ResolveRequestCache: Отримайте результати обробки попереднього кешу обробки, якщо він вже був кешований раніше, тоді немає потреби обробляти запит, і безпосередньо поверніть кешовані результати.

7. PostResolveRequestCache: кеш оброблено.

8. PostMapRequestHandler: Запитуваний об'єкт процесора створено на основі запиту користувача.

9. AcquireRequestState: Отримати статус запиту, який зазвичай використовується для сесії

10. PostAcquireRequestState: Сесію отримано

11. PreRequestHandlerВиконати: Підготувати обробник виконання.

12. PostRequestHandlerExecute: Обробник виконано

13. ReleaseRequestState: Стан запиту на звільнення.

14. PostReleaseRequestState: Статус запиту оприлюднено.

15. UpdateRequestCache: Оновити кеш.

16. PostUpdateRequestCache: кеш оновлено.

17. LogRequest: Запитана операція журналу

18. PostLogRequest: Операція журналу запиту завершена.

19. EndRequest: Запит обробляється.
Опубліковано 22.04.2019 09:48:33 |
Збережіть у закладки
Опубліковано 30.09.2021 19:19:09 |
Нещодавно вчився. Читайте уважно
 Орендодавець| Опубліковано 14.07.2023 20:26:36 |
ASP.NET MVC підраховує запити на основі модулів IHttpModule
https://www.itsvse.com/thread-10627-1-1.html
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com