¿Orden de Ejecución de Eventos HttpModule?


¿Alguien conoce un sitio o una página, o conoce el orden de ejecución de los eventos de la clase HttpApplication para la ejecución de eventos HttpModule?

Encontré la Documentación de MSDN para todos los eventos, pero no muestra una lista de pasos del proceso y no he podido encontrar uno.

Author: Michael Liu, 2009-01-14

4 answers

Tal vez esto ayuda

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

Una clase HttpApplication proporciona una serie de eventos con los que los módulos pueden sincronizarse. Los siguientes eventos están disponibles para que los módulos se sincronicen con cada solicitud. Estos eventos se enumeran en orden secuencial:

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

Los siguientes eventos están disponibles para que los módulos se sincronicen con cada transmisión de solicitud. El orden de estos eventos no es determinista.

  • PreSendRequestHeaders
  • PreSendRequestContent
  • Error

Vea el artículo para información completa.

 76
Author: Jader Dias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-14 00:32:46

Documentación de la Biblioteca MSDN:

Aquí están los eventos (en negrita) y otros pasos en la canalización de solicitudes para ASP.NET 4.0:

  1. Validar la solicitud, que examina la información enviada por el navegador y determina si contiene marcas potencialmente maliciosas.
  2. Realizar mapeo de URL, si cualquier URL se ha configurado en la sección UrlMappingsSection de la Web.archivo de configuración.
  3. Levanta el evento BeginRequest.
  4. Genera el evento AuthenticateRequest.
  5. Levanta el evento PostAuthenticateRequest.
  6. Levanta el evento AuthorizeRequest.
  7. Genera el evento PostAuthorizeRequest.
  8. Genera el evento ResolveRequestCache.
  9. Elevar el PostResolveRequestCache evento.
  10. [IIS 5.0/6.0] Basado en la extensión de nombre de archivo del recurso solicitado (asignado en el archivo de configuración de la aplicación), seleccione una clase que implemente IHttpHandler para procesar la solicitud. Si la solicitud es para un objeto (página) derivado de la clase Page y la página necesita ser compilada, ASP.NET compila la página antes de crear una instancia de la misma. [IIS 7.0] Elevar el MapRequestHandler evento. Un el controlador apropiado se selecciona en función de la extensión de nombre de archivo del recurso solicitado. El manejador puede ser un módulo de código nativo como el IIS 7.0 StaticFileModule o un módulo de código administrado como la clase PageHandlerFactory (que maneja .archivos aspx).
  11. Levanta el evento PostMapRequestHandler.
  12. Genera el evento AcquireRequestState.
  13. Genera el evento PostAcquireRequestState.
  14. Elevar el Prerrequesthandlerexecute evento.
  15. Llama al método ProcessRequest (o a la versión asíncrona IHttpAsyncHandler.BeginProcessRequest) de la clase IHttpHandler apropiada para la solicitud. Por ejemplo, si la solicitud es para una página, la instancia de página actual gestiona la solicitud.
  16. Levanta el evento PostRequestHandlerExecute.
  17. Aumenta el evento ReleaseRequestState.
  18. Elevar el PostReleaseRequestState evento.
  19. Realice el filtrado de respuestas si la propiedad Filter está definida.
  20. Genera el evento UpdateRequestCache.
  21. Levanta el evento PostUpdateRequestCache.
  22. [IIS 7.0] Elevar el LogRequest evento.
  23. [IIS 7.0] Genera el evento PostLogRequest.
  24. Levanta el evento EndRequest.
  25. Levanta el evento PreSendRequestHeaders.
  26. Elevar el PreSendRequestContent evento.

Nota: Los eventos MapRequestHandler, LogRequest y PostLogRequest solo son compatibles si la aplicación se ejecuta en modo integrado en IIS 7.0 y con.NET Framework 3.0 o posterior.

 47
Author: Michael Liu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-22 00:02:20

BeginRequest

La solicitud se ha iniciado. Si necesita hacer algo al principio de una solicitud (por ejemplo, mostrar banners publicitarios en la parte superior de cada página o alguna inicialización variable).

AuthenticateRequest

Si desea conectar su propio esquema de autenticación personalizado (por ejemplo, busque un usuario en una base de datos para validar la contraseña o verificar la información del encabezado en HTTP solicitud).

AuthorizeRequest

Este evento se utiliza internamente para implementar mecanismos de autorización (por ejemplo, para almacenar sus Listas de Control de Acceso (ACL) en una base de datos en lugar de en el sistema de archivos).

ResolveRequestCache

Este evento determina si una página se puede servir desde la Caché de salida. Si desea escribir su propio módulo de almacenamiento en caché (por ejemplo, compilar una caché basada en archivos en lugar de una caché de memoria), sincronice este evento con determine si desea servir la página desde la caché o se generará una página nueva.

AcquireRequestState

El estado de la sesión se recupera del almacén de estados. Si desea crear su propio módulo de administración de estado, sincronice este evento para obtener el estado de la sesión de su tienda de estados.

Prerrequesthandlerexecute

Este evento ocurre antes de que se ejecute el controlador HTTP.

PostRequestHandlerExecute

Este evento se produce después de ejecutar el controlador HTTP.

ReleaseRequestState

El estado de la sesión se almacena de nuevo en el almacén de estados. Si está creando un módulo de estado de sesión personalizado, debe almacenar su estado nuevamente en su tienda estatal.

UpdateRequestCache

Este evento devuelve la salida a la caché de salida.

EndRequest

Se ha completado la solicitud.

 3
Author: akazemis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-19 04:34:48

Desea llamar al método para el almacenamiento en caché en el evento PreSendRequestContent de httpmodule. El problema es que hay encabezado y pie de página web agregados según el requisito de los clientes en mi aplicación y no pude almacenar en caché que el contenido de imágenes, javascript y css. Actualmente estoy usando el método ReleaseRequestState de httpmodule.

 0
Author: bhaumik pandit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-03 07:52:02