2009-08-16 13 views

Respuesta

6

puede usar httpmodules para autenticación, auditoría o reescritura de url. Como cada solicitud pasa primero a través de todos los módulos, antes de que sea manejada por el httphandler, este es el lugar para aplicar el código que desea ejecutar antes de su código de aplicación específico.

Utilizaría un httphandler si no quiere confiar en el motor asp.net. por ejemplo, podría escribir su propio mecanismo de representación basado en AJAX, XML y XSLT que no dependa de las páginas asp.net tradicionales.

3

HttpModules y HttpHandlers son útiles cuando desea cambiar el manejo predeterminado de documentos de IIS, ya sea cambiando el comportamiento por completo o agregando procesamiento previo o posterior al documento.

Una aplicación práctica que he tenido para un HttpModule es la creación dinámica de miniaturas. Escribí un HttpModule que manejaba todas las solicitudes de imágenes. Si la solicitud contenía la cadena de consulta "? Thumb", generaría dinámicamente una miniatura en lugar de servir la imagen original.

También he visto HttpModules utilizado para eliminar comentarios y espacios en blanco desde la página de aspx y la reescritura de URL.

4

¿Has encontrado que estás escribiendo código en un evento ASP_page ASPX para emitir algo a la respuesta y luego llamar a Response.End? Eso probablemente se escribió mejor como HttpHandler (ashx).

+0

+1 sí, lo hice hace unos días :) –

2

HttpHandlers son excelentes para solicitudes de reenrutamiento para ciertos tipos de archivos y otros recursos. Por ejemplo, cuando necesita hacer algo con una solicitud entrante para un tipo de archivo que ASP.NET no protege mediante FormsAuthentication, puede determinar realmente si se trata de un tipo de archivo particular, ubicado en un directorio específico y redirigir al usuario a otra página si no está autorizado.

HttpModules puede realizar un procesamiento específico para su aplicación de una manera independiente del recurso. Una explicación más técnica se puede encontrar aquí: http://www.15seconds.com/issue/020417.htm

Además, sí agregan sobrecarga a cada solicitud, lo que significa que no debe usarlos para tareas que requieren mucho tiempo.

2

Tanto los controladores como los módulos solo pueden entenderse realmente en el contexto del modelo de canalización ASP.NET y cómo un controlador/módulo personalizado que usted cree se ajustará a ese modelo.

Par de buenos recursos here y here.

Como otros han mencionado módulos se pueden utilizar para crear un comportamiento en ciertos puntos de eventos (Otro uso común es el manejo global de excepción), manipuladores de petición de creación de punto final manipulación (que no es sólo un nombre inteligente), donde un áspid. la instancia de página neta (que en última instancia es solo un manejador muy empaquetado de todos modos) sería innecesariamente pesada o completamente incorrecta. Personalmente uso cada vez que creo algo que no genera HTML, que se vuelve más y más común cuanto más desarrollas aplicaciones web en lugar de sitios web.

3

Voy a citar el uso, las personas ya han dado buenas definiciones.

controladores HTTP
de imagen que quieren hacer que el mapa de un sitio web para buscar rastreador del motor, en lugar de aparecer el archivo de salvar de diálogo (El archivo que aparezca Ahorro de diálogo cuando ASP.NET/IIS no tienen un controlador predeterminado para el tipo de archivo solicitado, ej. txt). Escribí un controlador de HTTP para construir archivos de mapa del sitio sobre la marcha (extrayendo información del mapa del sitio de DB).

Cuestiones relacionadas