INFO: Introducción a los módulos y los controladores HTTP de ASP.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 307985 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E307985
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo proporciona una introducción a los módulos y controladores HTTP de ASP.NET.

Para obtener información general adicional acerca de ASP.NET, vea el siguiente artículo de Microsoft Knowledge Base:
305140 INFO: Guía básica de ASP.NET

Más información

Los módulos y los controladores HTTP forman una parte integrante de la arquitectura de ASP.NET. Mientras una solicitud es procesada, varios módulos HTTP la procesan (por ejemplo, el módulo de autenticación y el módulo de sesión) y después la procesa un único controlador HTTP. Después de que el controlador haya procesado la solicitud, ésta es devuelta a través de los módulos HTTP.

Este artículo está dividido en las secciones siguientes:

Módulos HTTP

Los módulos se llaman antes y después de que se ejecute el controlador. Los módulos permiten a los desarrolladores interceptar cada solicitud individual, participar en ella o modificarla. Los módulos implementan la interfaz IHttpModule, que se encuentra en el espacio de nombres System.Web.

Eventos disponibles

Una clase HttpApplication proporciona una serie de eventos con los que los módulos se pueden sincronizar. Los eventos siguientes están disponibles para que los módulos se sincronicen en cada solicitud. Estos eventos se muestran en orden secuencial:
  • BeginRequest: se ha iniciado la solicitud. Si necesita hacer algo al principio de una solicitud (por ejemplo, mostrar titulares de anuncio al principio de cada página), sincronice este evento.
  • AuthenticateRequest: Si desea utilizar su propio esquema de autenticación personalizado (por ejemplo, buscar un usuario en una base de datos para validar la contraseña), cree un módulo que sincronice este evento y autentique al usuario como desee.
  • AuthorizeRequest: este evento se usa internamente para implementar mecanismos de autorización (por ejemplo, para almacenar las listas de control de acceso (ACL) en una base de datos en lugar de en el sistema de archivos). Aunque puede invalidar este evento, no es muy conveniente.
  • 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 una caché basada en archivos en lugar de una caché de memoria, sincronice este evento para determinar si servir la página desde la caché.
  • AcquireRequestState: el estado de la sesión se obtiene del almacén de estados. Si desea crear su propio módulo de administración de estados, sincronice este evento para obtener el estado de la sesión de su almacén de estados.
  • PreRequestHandlerExecute: este evento se produce antes de que se ejecute el controlador HTTP.
  • PostRequestHandlerExecute: este evento se produce después de que se ejecute el controlador HTTP.
  • ReleaseRequestState: el estado de la sesión se vuelve a almacenar en el almacén de estados. Si está creando un módulo de estado de sesión personalizado, debe almacenar el estado de nuevo en el almacén de estado.
  • UpdateRequestCache: este evento escribe el resultado en la caché de resultados. Si está creando un módulo de caché personalizado, escriba el resultado en la caché.
  • EndRequest: la solicitud se ha completado. Puede ser conveniente crear un módulo de depuración que recopile información a través de la solicitud y, después, la escriba en la página.
Los eventos siguientes están disponibles para que los módulos se sincronicen en cada transmisión de la solicitud. El orden de estos eventos no se puede predecir.
  • PreSendRequestHeaders: este evento se produce antes de que se envíen los encabezados. Si desea agregar encabezados adicionales, puede sincronizar este evento desde un módulo personalizado.
  • PreSendRequestContent: este evento ocurre cuando se llama al método Response.Flush. Si desea agregar contenido adicional, puede sincronizar este evento desde un módulo personalizado.
  • Error: este evento ocurre cuando se produce una excepción no controlada. Si desea escribir un módulo de controladores de error personalizado, puede sincronizar este evento.

Configurar módulos HTTP

El controlador de la sección de configuración <httpModules> es responsable de configurar los módulos HTTP dentro de una aplicación. Se puede declarar en los equipos, los sitios o las aplicaciones. Utilice la siguiente sintaxis para el controlador de la sección <httpModules>:
<httpModules> <add type="[COM+ Class], [Assembly]" name="[ModuleName]" /> <remove type="[COM+ Class], [Assembly]" name="[ModuleName]" /> <clear /> </httpModules>
				

Crear módulos HTTP

Para crear un módulo HTTP, debe implementar la interfaz IHttpModule. La interfaz IHttpModule tiene dos métodos con las firmas siguientes:
void Init(HttpApplication); void Dispose();
				
Para obtener información adicional acerca de cómo crear módulos HTTP, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
308000 CÓMO: Crear un módulo HTTP de ASP.NET mediante Visual Basic .NET
307996 CÓMO: Cómo crear un módulo HTTP de ASP.NET mediante Visual C# .NET

Controladores HTTP

Los controladores se usan para procesar solicitudes de extremos individuales. Los controladores permiten a ASP.NET Framework procesar direcciones URL HTTP individuales o grupos de extensiones URL dentro de una aplicación. A diferencia de los módulos, sólo se usa un controlador para procesar una solicitud. Todos los controladores implementan la interfaz IHttpHandler, que se encuentra en el espacio de nombres System.Web. Los controladores son ligeramente parecidos a las extensiones de la Interfaz de programación de aplicaciones para servidores de Internet (ISAPI).

Configurar controladores HTTP

El controlador de la sección de configuración <httpHandlers> es responsable de asignar las direcciones URL entrantes para las clases IHttpHandler o IHttpHandlerFactory. Se puede declarar en los equipos, los sitios o las aplicaciones. Los subdirectorios heredan estas opciones.

Los administradores usan la directiva de la etiqueta <add> para configurar la sección <httpHandlers>. Las directivas <Add> se interpretan y procesan en orden secuencial descendente. Utilice la siguiente sintaxis para el controlador de la sección <httpHandler>:
<httpHandlers> <add verb="[verb list]" path="[path/wildcard]" type="[COM+ Class], [Assembly]" validate="[true/false]" /> <remove verb="[verb list]" path="[path/wildcard]" /> <clear /> </httpHandlers>
				

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 firmas siguientes:
void ProcessRequest(HttpContext); bool IsReusable {get;}
				
NOTA
Si en el controlador HTTP se requiere el estado de la sesión, también tiene que implementar la interfaz IRequiresSessionState. Para obtener información adicional acerca de cómo crear controladores HTTP, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
308001 CÓMO: Crear un controlador HTTP de ASP.NET mediante Visual C# .NET
Para obtener información adicional al respecto, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
307997 CÓMO: Crear un controlador HTTP de ASP.NET mediante Visual Basic .NET

Propiedades

Id. de artículo: 307985 - Última revisión: martes, 26 de diciembre de 2006 - Versión: 3.5
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Palabras clave: 
kbarttyperoadmap kbhttphandlers kbhttpmodule kbhttpruntime kbinfo KB307985
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com