Así que hay una clase que implementa IHttpHandler
llama: MyHandler
y está en el espacio de nombres Example
, es necesario hacer las siguientes entradas en el sitio de Web.Config
en la sección httpHandlers:
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
</httpHandlers>
Desde este redirige todas las URL para su sitio web/aplicación a su manejador, debe considerar cómo servir contenido estático (imgs, scripts, hojas de estilo, etc.). Una forma es la de almacenar dicho contenido estático en una misma URL como http://example.com/static/...
, a continuación, puede configurar sus controladores como tal:
<httpHandlers>
<add verb="*" path="*" type="Example.MyHandler"/>
<add verb="GET,HEAD" path="static/*" type="System.Web.StaticFileHandler" />
</httpHandlers>
Por su servidor web dev local (integrado en Visual Studio) esto es todo lo que se necesita. Para IIS, también debe decirle a IIS cómo tratar con estas URL (ya que el servidor primero analiza una solicitud para decidir dónde enviarla, incluso si debe enviarla a ASP.NET o a alguna otra extensión).
- abierta: Administrador de IIS ->
- Sección: Sitios Web ->
- clic derecho en su página web ->
- Opción: Propiedades ->
- Tab: Inicio Directory ->
- Botón: [Configuración ...] ->
- Pestaña: Asignaciones ->
- Sección: "Mapas de aplicaciones comodín (orden de implementación) : "->
- Botón: [Insertar ...] ->
- ejecutable: "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll" (o cualquier versión del tiempo de ejecución de .NET utiliza el controlador) ->
- Desactive la opción "Verificar que archivo existe" ->
- Botón: [OK]
Ahora IIS y ASP.NET sabe cómo hacer frente a sus URL.
El enfoque anterior significa que cuando se solicitan archivos estáticos, ASP.NET está realmente sirviendo los archivos, no IIS, lo que conlleva algunas desventajas (discutido here). Puede anular este comportamiento (deshabilitar la asignación de comodines desde el directorio estático) cambiando el directorio a una aplicación (en el Administrador de IIS), eliminando la declaración de asignación de comodines (agregada arriba) y volviendo a cambiarla de una aplicación. Voilà: IIS maneja los archivos estáticos sin molestar a su ASP.NET.
¿Puedes explicar "No usaría un controlador HTTP para eso"? Hasta ahora, sé que el manejador HTTP proporciona un mejor rendimiento que una página ASPX normal y no veo ninguna desventaja en el manejo del controlador HTTP. –
El enrutamiento de página es más sencillo y proporciona más flexibilidad. Fue diseñado para exactamente lo que describiste. Es posible que un manejador HTTP sea más rápido, pero eso se debe a que parte del soporte para páginas ASP.NET no se ejecuta/carga. Acabo de implementar un controlador HTTP personalizado. Funciona muy bien. Pero no creo que sea el enfoque correcto para lo que describiste. –
Gracias por su respuesta ... ¿puede elaborar más lo que quiere decir con "directo y ofrece más flexibilidad"? Veo el enfoque del manejador HTTP muy fácil y directo. Además, ¿puede ser más específico sobre cómo se vería la solución de enrutamiento de URL? Rudu fue muy detallado en su respuesta. Gracias otra vez Jonathan. –