Порядок Выполнения События HTTPModule?



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



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

647   4  

4 ответов:

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

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

смотрите статью для получения полной информации.

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

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

  1. Проверьте запрос, который проверяет информацию, отправленную браузером, и определяет, содержит ли он потенциально вредоносная разметка.
  2. выполнить преобразования url, если URL-адреса были настроены в разделе UrlMappingsSection веб.конфигурационный файл.
  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. выполнить фильтрацию ответов, если свойство фильтра определено.
  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 или более поздней версии.

BeginRequest

запрос запущен. Если вам нужно что-то сделать в начале запроса (например, отобразить рекламные баннеры в верхней части каждой страницы или инициализацию какой-либо переменной).

AuthenticateRequest

Если вы хотите подключить свою собственную схему проверки подлинности (например, найдите пользователя в базе данных для проверки пароля или проверки информации заголовка в HTTP запрос.)

AuthorizeRequest

Это событие используется внутренне для реализации механизмов авторизации (например, для хранения списков управления доступом (ACL) в базе данных, а не в файловой системе).

ResolveRequestCache

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

AcquireRequestState

состояние сеанса извлекается из хранилища состояний. Если вы хотите создать свой собственный модуль управления состоянием, то синхронизируйте это событие, чтобы захватить состояние сеанса из вашего хранилища состояний.

PreRequestHandlerExecute

Это событие происходит до того, как обработчик HTTP выполненный.

PostRequestHandlerExecute

Это событие происходит после того, как обработчик http-данных не выполняется.

ReleaseRequestState

состояние сеанса сохраняется обратно в хранилище состояний. Если вы создаете пользовательский модуль состояния сеанса, то вы должны сохранить свое состояние обратно в хранилище состояний.

UpdateRequestCache

Это событие записывает результаты в выходной Кэш.

EndRequest

запрос завершен.

хотите вызвать метод для кэширования в PreSendRequestContent событие httpmodule. Проблема в том, что в моем приложении есть веб-верхний и Нижний колонтитулы, добавленные в соответствии с требованиями клиентов, и я не мог кэшировать эти изображения содержимого, javascript и css. В настоящее время я использую ReleaseRequestState метод httpmodule.

Comments

    Ничего не найдено.