Escrito delante
En cuanto al contenido relevante de IHttpModule, también me preguntaron durante la entrevista, y sentí vagamente que esta interfaz tiene un método Init, que puede registrar una serie de eventos con el método Init en la clase de implementación. En casa este fin de semana, realmente no hay nada que hacer, aunque sea para comprobar y rellenar los vacíos de este conocimiento.
Funciona el IHttpModule
Los amigos que conozcan asp.net ciclo de vida deben saber que la ejecución de HttpModule se ejecuta antes de HttpHandler, y después de ejecutar una serie de eventos de HttpModule, luego ejecutar HttpHandler y después ejecutar algunos eventos de HttpModule. Para más detalles, consulte el siguiente diagrama del ciclo de vida.
El HttpHandler es el lugar para gestionar la solicitud http, el HttpModule es la "única manera" para una petición HTTP, así que puedes añadir la información requerida encima de la información de la solicitud HTTP antes de que esta petición HTTP pase al centro real de procesamiento de solicitudes (HttpHandler), o realizar trabajo adicional en la información interceptada de la solicitud HTTP. O en algunos casos, simplemente terminar las solicitudes HTTP que cumplen ciertas condiciones, lo que puede actuar como filtro.
Una solicitud HTTP se pasará al contenedor HttpHandler en algún momento (evento ResolveRequestCache) durante la entrega del contenedor HttpModule. Tras este evento, el contenedor HttpModule crea una instancia de entrada del HttpHandler, pero en lugar de ceder el control de la solicitud HTTP, continúa lanzando los eventos AcquireRequestState y PreRequestHandlerExcute. Tras el evento PreRequestHandlerExcute, la ventana HttpModule da temporalmente control al contenedor HttpHandler para el procesamiento real de solicitudes HTTP.
Dentro del contenedor HttpHandler, se ejecuta el método ProcesRequest para gestionar las solicitudes HTTP. Después de que el HttpHandler del contenedor procesa toda la petición HTTP, devuelve el control al HttpModule, que continúa pasando la información de la solicitud HTTP procesada capa por capa hasta que se devuelve al cliente.
Un caso
Estructura del proyecto
Código MyHttpModule
Registrar un HttpModule personalizado en web.config
Navegar por la página Default.aspx
¿Cuál es entonces el orden de ejecución de una serie de eventos en el ciclo vital?
Consulta los resultados
Utiliza HttpModule para terminar la solicitud Http
resultado
resumen
Aquí introducimos la interfaz más importante en el ciclo de vida de asp.net, IHttpModule, que puede describirse como una interfaz de eventos, porque en el método Init de la clase de implementación se pueden registrar varios eventos en el ciclo de vida y se pueden definir diversas lógicas en el evento.
|