2009-01-14 20 views
54

¿Alguien conoce un sitio o página, o sabe el orden de ejecución de los eventos de la clase HTTPApplication para la ejecución de eventos HTTPModule?Orden de ejecución de evento HTTPModule?

Encontré MSDN Documentation para todos los eventos, pero no muestra una lista de pasos del proceso y no he podido encontrar ninguno.

Respuesta

73

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 sincronizar. 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. PreRequestHandlerExecute
  7. PostRequestHandlerExecute
  8. ReleaseRequestState
  9. UpdateRequestCache
  10. EndRequest

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

  • PreSendRequestHeaders
  • PreSendRequestContent
  • error

Ver el artículo para información completa. documentación

45

de MSDN:

Éstos son los eventos (en negrita) y otros pasos en la canalización de solicitud para ASP.NET 4.0:

  1. Validar el reques t, que examina la información enviada por el navegador y determina si contiene marcas potencialmente maliciosas.
  2. Realice la asignación de URL, si se ha configurado alguna URL en la sección UrlMappingsSection del archivo Web.config.
  3. Levante el evento BeginRequest.
  4. Levante el evento AuthenticateRequest.
  5. Levante el evento PostAuthenticateRequest.
  6. Levante el evento AuthorizeRequest.
  7. Levante el evento PostAuthorizeRequest.
  8. Levante el evento ResolveRequestCache.
  9. Levante el evento PostResolveRequestCache.
  10. [IIS 5.0/6.0] Según la extensión del nombre del 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 compilarse, ASP.NET compila la página antes de crear una instancia de la misma. [IIS 7.0] Levante el evento MapRequestHandler. Se selecciona un controlador apropiado en función de la extensión del nombre de archivo del recurso solicitado. El controlador puede ser un módulo de código nativo, como el StaticFileModule de IIS 7.0 o un módulo de código administrado, como la clase PageHandlerFactory (que maneja los archivos .aspx).
  11. Levante el evento PostMapRequestHandler.
  12. Levante el evento AcquireRequestState.
  13. Levante el evento PostAcquireRequestState.
  14. Levante el evento PreRequestHandlerExecute.
  15. Llamar al método ProcessRequest (o la versión asíncrona IHttpAsyncHandler.BeginProcessRequest) de la clase IHttpHandler adecuada para la solicitud. Por ejemplo, si la solicitud es para una página, la instancia de página actual maneja la solicitud.
  16. Levante el evento PostRequestHandlerExecute.
  17. Levante el evento ReleaseRequestState.
  18. Levante el evento PostReleaseRequestState.
  19. Realiza el filtrado de respuesta si se define la propiedad Filtro.
  20. Levante el evento UpdateRequestCache.
  21. Levante el evento PostUpdateRequestCache.
  22. [IIS 7.0] Levante el evento LogRequest.
  23. [IIS 7.0] Levante el evento PostLogRequest.
  24. Levante el evento EndRequest.
  25. Levante el evento PreSendRequestHeaders.
  26. Levante el evento PreSendRequestContent.

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

2

BeginRequest

solicitud ha sido iniciado. Si necesita hacer algo al comienzo de una solicitud (por ejemplo, mostrar pancartas publicitarias 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, buscar un usuario en una base de datos para validar la contraseña o la comprobación de la información del encabezado en la solicitud HTTP).

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, crear un caché basado en archivos en lugar de un caché de memoria), sincronice este evento para determinar si se va a servir la página desde el caché o se generará una página nueva.

AcquireRequestState estado de sesión

se recupera del almacén de estado. Si desea construir su propio módulo de gestión de estado, sincronice este evento para obtener el estado de sesión de su almacén de estado.

PreRequestHandlerExecute

Este evento se produce antes de que se ejecuta el manejador HTTP.

PostRequestHandlerExecute

Este evento se produce después de que se ejecuta el manejador HTTP.

ReleaseRequestState

estado de sesión se vuelve a almacenar en el almacén de estado. Si está creando un módulo de estado de sesión personalizado, debe almacenar su estado en la tienda de estado.

UpdateRequestCache

Este evento Escribe la salida de nuevo a la salida de la caché.

EndRequest

solicitud se ha completado.

0

Quiere llamar al método de almacenamiento en caché en el evento PreSendRequestContent de httpmodule. El problema es que hay un encabezado y un pie de página web agregados según el requisito del cliente en mi aplicación y no pude almacenar en caché las imágenes de contenido, javascript y css. En este momento estoy usando el método ReleaseRequestState de httpmodule.

Cuestiones relacionadas