tag route page net for asp asp.net httphandler httpmodule

asp.net - route - select asp-for asp-items



Controlador HTTP vs módulo HTTP (7)

Buen artículo sobre HttpModule-and-HttpHandlers

Referencia: INFO: ASP.NET HTTP Modules y HTTP Handlers Overview

"Los módulos se llaman antes y después de que se ejecute el controlador. Los módulos permiten a los desarrolladores interceptar, participar o modificar cada solicitud individual. Los manipuladores se utilizan para procesar solicitudes de puntos finales individuales. Los manejadores permiten que ASP.NET Framework procese URL HTTP individuales o grupos de extensiones de URL dentro de una aplicación. A diferencia de los módulos, solo se utiliza un controlador para procesar una solicitud ".

¿Alguien puede explicar en menos de 2 oraciones la diferencia entre ambos? Sí, sé que Google puede proporcionar cientos de respuestas, pero no una en 2 oraciones claras :)


El controlador HTTP es el proceso que se ejecuta en respuesta a una solicitud realizada a una aplicación web ASP.NET. Los módulos HTTP le permiten examinar las solicitudes entrantes y salientes y tomar medidas en función de la solicitud.


El manejador HTTP es donde realmente se realiza la compilación en función de la configuración. como si la extensión de la página es .aspx, se compilará a través de system.web.Ui.Pagahandlefactory. una vez que se realiza la compilación en HTTP, la solicitud del identificador irá a través del módulo HTTP e IIS.


El objetivo principal y común de HttpHandler y HttpModule es inyectar una lógica de procesamiento previo antes de que la solicitud de ASP.NET llegue al servidor IIS.

ASP.NET proporciona dos formas de inyectar lógica en la canalización de solicitudes;

  1. Http Handlers: Http Handler nos ayuda a inyectar la lógica de preprocesamiento en función de la extensión del nombre de archivo solicitado. ASP.NET utiliza controladores HTTP para implementar muchas de sus propias funcionalidades. Por ejemplo, ASP.NET utiliza manejadores para procesar archivos .aspx, .asmx y trace.axd.

ejemplo: feeds RSS: para crear un feed RSS para un sitio web, puede crear un controlador que emita un formato XML con formato RSS. Entonces, cuando los usuarios envían una solicitud a su sitio que termina en .rss, ASP.NET llama a su controlador para procesar la solicitud.

Hay tres pasos involucrados en la creación de Handler 1. Implemente la interfaz IHttpHandler. 2. Registre el controlador en el archivo web.config o machine.config. 3. Asigne la extensión de archivo (* .arshad) a aspnet_isapi.dll en IIS.

La interfaz IHttpHandler tiene el método ProcessRequest y la propiedad IsReusable que debe implementarse. ProcessRequest: en este método, escribe el código que produce la salida para el controlador. IsResuable: esta propiedad dice si este manejador se puede reutilizar o no.

Puede registrar el controlador en el archivo web.config como este

<httpHandlers> <add verb="*" path="*.arshad" type="namespace.classname, assemblyname" /> </httpHandlers>

Nota: aquí manejamos cualquier nombre de archivo con la extensión arshad.

  1. Http Modules: HttpModule es un procesador basado en eventos para inyectar la lógica de procesamiento previo antes de que la solicitud llegue al servidor IIS. ASP.NET utiliza el Módulo HTTP para implementar muchas de sus propias funcionalidades, como autenticación y autorización, administración de sesiones y almacenamiento en caché de resultados, etc.

El motor ASP.NET emite muchos eventos a medida que la solicitud pasa a través de la interconexión de solicitudes. Algunos de esos eventos son AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Usando HttpModule puedes escribir lógica en estos eventos. Estas lógicas se ejecutan cuando los eventos se disparan y antes de que la solicitud llegue a IIS.

La creación de Módulos requiere dos pasos: 1. Implementar la interfaz IHttpModule 2. Registrar el módulo en el archivo web.config o machine.config

ejemplo: Seguridad: al usar el módulo HTTP, puede realizar una autenticación personalizada u otras comprobaciones de seguridad antes de que la solicitud llegue a IIS.


HttpHandler es hacia donde se dirige el tren de solicitud. HttpModule es una estación en el camino.


HttpHandler es responsable de gestionar la solicitud HTTP, mientras que HttpModule responde a los eventos del ciclo de vida de la aplicación.


Las dos oraciones:

Un HttpModule se ejecutará para cada solicitud a su aplicación, independientemente de la extensión, y generalmente se usa para cosas como seguridad, estadísticas, registro, etc.

Un HttpHandler generalmente se asocia con una extensión específica, y se usa para cosas como alimentadores RSS, generación o modificación dinámica de imágenes y similares.

Un poco más de explicación si eso no está completamente claro:

La forma en que pienso sobre ellos: los módulos "se conectan" a la tubería de solicitud, mientras que los manejadores "manejan" una extensión de archivo específica. Por lo tanto, si tiene un sitio con un LoggingModule y un PdfHandler, ambos se ejecutarán para una solicitud a http://example.com/sample.pdf , y el módulo de registro solo se ejecutará para una solicitud a http://example.com/page.aspx .

Hay un artículo bastante claro sobre la diferencia en MSDN: Controladores HTTP y Módulos HTTP