HTTPModule Порядок выполнения событий? - PullRequest
59 голосов
/ 14 января 2009

Кто-нибудь знает сайт или страницу или знает порядок выполнения событий класса HTTPApplication для выполнения события HTTPModule?

Я нашел документацию MSDN для всех событий, но она не показывает список шагов процесса, и я не смог найти один.

Ответы [ 3 ]

78 голосов
/ 14 января 2009

Может быть, это помогает

http://support.microsoft.com/kb/307985/en-us/

Класс HttpApplication предоставляет ряд событий, с которыми модули могут синхронизироваться. Следующие события доступны для синхронизации модулей с каждым запросом. Эти события перечислены в последовательном порядке:

  1. BeginRequest
  2. AuthenticateRequest
  3. AuthorizeRequest
  4. ResolveRequestCache
  5. AcquireRequestState
  6. PreRequestHandlerExecute
  7. PostRequestHandlerExecute
  8. ReleaseRequestState
  9. UpdateRequestCache
  10. EndRequest

Следующие события доступны для синхронизации модулей с каждой передачей запроса. Порядок этих событий недетерминирован.

  • PreSendRequestHeaders
  • PreSendRequestContent
  • Error

См. Статью для полной информации.

50 голосов
/ 22 января 2012

Документация библиотеки MSDN:

Вот события (выделены жирным шрифтом) и другие шаги в конвейере запросов для ASP.NET 4.0:

  1. Проверка запроса, который проверяет информацию, отправленную браузером, и определяет, содержит ли она потенциально вредоносную разметку.
  2. Выполните сопоставление URL-адресов, если какие-либо URL-адреса были настроены в разделе UrlMappingsSection файла Web.config.
  3. Вызовите событие BeginRequest .
  4. Вызовите событие AuthenticateRequest .
  5. Вызовите событие PostAuthenticateRequest .
  6. Вызовите событие AuthorizeRequest .
  7. Вызовите событие PostAuthorizeRequest .
  8. Вызовите событие ResolveRequestCache .
  9. Вызовите событие PostResolveRequestCache .
  10. [IIS 5.0 / 6.0] На основе расширения имени файла запрошенного ресурса (сопоставленного в файле конфигурации приложения) выберите класс, который реализует IHttpHandler для обработки запроса. Если запрос относится к объекту (странице), производному от класса Page, и страница должна быть скомпилирована, ASP.NET компилирует страницу перед созданием ее экземпляра. [IIS 7.0] Вызвать событие MapRequestHandler . Соответствующий обработчик выбирается на основе расширения имени файла запрашиваемого ресурса. Обработчиком может быть модуль с собственным кодом, такой как IIS 7.0 StaticFileModule, или модуль управляемого кода, такой как класс PageHandlerFactory (который обрабатывает файлы .aspx).
  11. Вызовите событие PostMapRequestHandler .
  12. Вызовите событие AcquireRequestState .
  13. Вызовите событие PostAcquireRequestState .
  14. Вызовите событие PreRequestHandlerExecute .
  15. Вызвать метод ProcessRequest (или асинхронную версию IHttpAsyncHandler.BeginProcessRequest) соответствующего класса IHttpHandler для запроса. Например, если запрос относится к странице, текущий экземпляр страницы обрабатывает запрос.
  16. Вызовите событие PostRequestHandlerExecute .
  17. Вызовите событие ReleaseRequestState .
  18. Вызовите событие PostReleaseRequestState .
  19. Выполните фильтрацию ответов, если определено свойство Filter.
  20. Вызовите событие UpdateRequestCache .
  21. Вызовите событие PostUpdateRequestCache .
  22. [IIS 7.0] Вызовите событие LogRequest .
  23. [IIS 7.0] Вызовите событие PostLogRequest .
  24. Вызовите событие EndRequest .
  25. Вызовите событие PreSendRequestHeaders .
  26. Вызовите событие PreSendRequestContent .

Примечание. События MapRequestHandler, LogRequest и PostLogRequest поддерживаются только в том случае, если приложение работает в интегрированном режиме в IIS 7.0 и в .NET Framework 3.0 или более поздней версии.

0 голосов
/ 29 марта 2019

Принятый ответ устарел. Вот список событий в порядке их возникновения согласно документации :

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  5. PostAuthorizeRequest

  6. ResolveRequestCache

  7. PostResolveRequestCache

    После события PostResolveRequestCache и до события PostMapRequestHandler создается обработчик события (который представляет собой страницу, соответствующую URL-адресу запроса). Когда сервер работает под управлением IIS 7.0 в интегрированном режиме и, по крайней мере, в .NET Framework версии 3.0, возникает событие MapRequestHandler. Когда сервер работает под управлением IIS 7.0 в классическом режиме или в более ранней версии IIS, это событие не может быть обработано.

  8. PostMapRequestHandler

  9. AcquireRequestState

  10. PostAcquireRequestState

  11. PreRequestHandlerExecute

  12. PostRequestHandlerExecute

  13. ReleaseRequestState

  14. PostReleaseRequestState

  15. UpdateRequestCache

  16. PostUpdateRequestCache

  17. LogRequest

  18. PostLogRequest

  19. EndRequest

...