asp.net httphandler ihttphandler ihttpasynchandler

asp.net - httphandler c#



Qué es un HttpHandler en ASP.NET (6)

¿Qué es un HttpHandler en ASP.NET? ¿Por qué y cómo se usa?


Un HttpHandler (o IHttpHandler ) es básicamente cualquier cosa que sea responsable de servir contenido. Una página ASP.NET (aspx) es un tipo de controlador.

Puede escribir el suyo, por ejemplo, para servir imágenes, etc. desde una base de datos en lugar de hacerlo desde el servidor web mismo, o para escribir un simple servicio POX (en lugar de SOAP / WCF / etc.)


En los términos más simples, un ASP.NET HttpHandler es una clase que implementa la interfaz System.Web.IHttpHandler .

ASP.NET HTTPHandlers es responsable de interceptar las solicitudes realizadas en su servidor de aplicaciones web ASP.NET. Se ejecutan como procesos en respuesta a una solicitud realizada al sitio ASP.NET. El controlador más común es un controlador de página ASP.NET que procesa archivos .aspx. Cuando los usuarios solicitan un archivo .aspx, la página procesa la solicitud a través del controlador de página.

ASP.NET ofrece algunos controladores HTTP predeterminados :

  • Page Handler (.aspx): maneja páginas web
  • Controlador de control de usuario (.ascx): maneja páginas de control de usuario web
  • Web Service Handler (.asmx): maneja páginas de servicios web
  • Trace Handler (trace.axd): maneja la funcionalidad de rastreo

Puede crear sus propios manejadores HTTP personalizados que rinden salida personalizada al navegador. Los escenarios típicos para los controladores HTTP en ASP.NET son, por ejemplo,

  • entrega de imágenes creadas dinámicamente (gráficos, por ejemplo) o imágenes redimensionadas.
  • Feeds RSS que emiten XML con formato RSS

Implementa la interfaz IHttpHandler para crear un controlador síncrono y la interfaz IHttpAsyncHandler para crear un controlador asíncrono. Las interfaces requieren que implemente el método ProcessRequest y la propiedad IsReusable .

El método ProcessRequest maneja el procesamiento real de las solicitudes realizadas, mientras que la propiedad booleana IsReusable especifica si su controlador puede agruparse para su reutilización (para aumentar el rendimiento) o si se necesita un nuevo controlador para cada solicitud.


Ejemplo de HttpHandler,

Manejador de HTTP en ASP.NET 2.0

Un controlador es responsable de cumplir las solicitudes de un navegador. Las solicitudes que gestiona un navegador se manejan por extensión de archivo o llamando al controlador directamente. La API de solicitud y respuesta de bajo nivel para atender las solicitudes Http entrantes son Http Handlers en Asp.Net. Todos los controladores implementan la interfaz IHttpHandler, que se encuentra en el espacio de nombres System.Web. Los controladores son algo análogos a las extensiones de la Interfaz de programación de aplicaciones de servidor de Internet (ISAPI).

Implementa la interfaz IHttpHandler para crear un controlador síncrono y la interfaz IHttpAsyncHandler para crear un controlador asíncrono. Las interfaces requieren que implemente el método ProcessRequest y la propiedad IsReusable. El método ProcessRequest maneja el procesamiento real para las solicitudes realizadas, mientras que la propiedad booleana IsReusable especifica si su controlador se puede agrupar para su reutilización para aumentar el rendimiento o si se requiere un nuevo controlador para cada solicitud.

La extensión de archivo .ashx está reservada para manejadores personalizados. Si crea un controlador personalizado con una extensión de nombre de archivo de .ashx, se registrará automáticamente en IIS y ASP.NET. Si elige usar una extensión de archivo alternativa, tendrá que registrar la extensión dentro de IIS y ASP.NET. La ventaja de usar una extensión distinta de .ashx es que puede asignar múltiples extensiones de archivo a un manejador.

Configuración de controladores HTTP

El manejador de sección de configuración es responsable de mapear las URL entrantes a la clase IHttpHandler o IHttpHandlerFactory. Se puede declarar en la computadora, el sitio o el nivel de la aplicación. Los subdirectorios heredan estas configuraciones. Los administradores usan la directiva de etiquetas para configurar la sección. las directivas se interpretan y procesan en un orden secuencial de arriba hacia abajo. Use la siguiente sintaxis para el manejador de sección:

Crear controladores HTTP

Para crear un controlador HTTP, debe implementar la interfaz IHttpHandler. La interfaz IHttpHandler tiene un método y una propiedad con las siguientes firmas: vacío ProcessRequest (HttpContext); bool IsReusable {get;}


Cualquier clase que implemente la interfaz System.Web.IHttpHandler convierte en HttpHandler . Y esta clase se ejecuta como procesos en respuesta a una solicitud realizada al sitio ASP.NET.

El controlador más común es un controlador de página ASP.NET que procesa archivos .aspx. Cuando los usuarios solicitan un archivo .aspx, la página procesa la solicitud a través del manejador de página (The Class que implementa System.Web.IHttpHandler Interface).

Puede crear sus propios manejadores HTTP personalizados que rinden salida personalizada al navegador.

Algunos controladores predeterminados de ASP.NET son:

  1. Page Handler (.aspx) - Maneja páginas web
  2. Controlador de control de usuario (.ascx): maneja páginas de control de usuario web
  3. Web Service Handler (.asmx) - Maneja páginas de servicios web
  4. Trace Handler (trace.axd) - Maneja la funcionalidad de rastreo

Un controlador HTTP ASP.NET es el proceso (con frecuencia denominado "punto final") que se ejecuta en respuesta a una solicitud realizada a una aplicación web ASP.NET. El controlador más común es un controlador de página ASP.NET que procesa archivos .aspx. Cuando los usuarios solicitan un archivo .aspx, la página procesa la solicitud a través del controlador de página. Puede crear sus propios manejadores HTTP que rindan salida personalizada al navegador.


Un controlador ASP.NET HTTP es el proceso (con frecuencia denominado "punto final") que se ejecuta en respuesta a una solicitud realizada a una aplicación web ASP.NET. El controlador más común es un controlador de página ASP.NET que procesa archivos .aspx. Cuando los usuarios solicitan un .aspx file , la página procesa la solicitud a través del controlador de página.

El controlador de página ASP.NET es solo un tipo de controlador. ASP.NET viene con muchos otros controladores incorporados, como el controlador de servicios web para .asmx files .

Puede crear manejadores HTTP personalizados cuando desee un manejo especial que pueda identificar usando extensiones de nombre de archivo en su aplicación. Por ejemplo, los siguientes escenarios serían buenos usos de los controladores HTTP personalizados:

Feeds RSS Para crear un feed RSS para un sitio, puede crear un controlador que emita un formato XML con formato RSS. A continuación, puede vincular la extensión .rss (por ejemplo) en su aplicación al controlador personalizado. Cuando los usuarios envían una solicitud a su sitio que finaliza en .rss, ASP.NET llamará a su controlador para procesar la solicitud.

Servidor de imágenes Si desea que su aplicación web sirva imágenes en una variedad de tamaños, puede escribir un controlador personalizado para cambiar el tamaño de las imágenes y luego enviarlas al usuario como respuesta del controlador.

Los controladores HTTP tienen acceso al contexto de la aplicación, incluida la identidad del usuario solicitante (si se conoce), el estado de la aplicación y la información de la sesión. Cuando se solicita un controlador HTTP, ASP.NET llama al método ProcessRequest en el controlador apropiado. El método ProcessRequest del controlador crea una respuesta, que se envía de vuelta al navegador solicitante. Al igual que con cualquier solicitud de página, la respuesta pasa por cualquier módulo HTTP que se haya suscrito a eventos que ocurran después de que se haya ejecutado el controlador.