asp.net - examples - url rewrite windows server 2012 download
Reescritura de URL de HttpModule con IIS6 sin URLs sin extensión (4)
¿Estás seguro de que cuando "funciona" no estás ejecutando el servidor web de desarrollo Cassini incluido en VS.NET? Porque los comodines sin extensión funcionan bajo Cassini, lo que puede ser muy confuso, por decir lo menos.
Estamos utilizando el módulo Intelligent URLRewriting para asp.net con la versión 2.0 del framework y IIS6. Nuestras URL generalmente no tienen extensión.
Entiendo que IIS6 realmente no puede manejar esta situación sin un comodín general (que causa otros problemas).
Sin embargo, funciona! A veces. En otros momentos (por ejemplo, en la máquina de un desarrollador y en mi equipo cuando señalo un directorio virtual diferente en la aplicación) no es así. Por "no funciona" me refiero a que los HttpModules configurados nunca llegan a ser afectados.
¿Alguien puede explicar esto?
Gracias.
Si ejecuta un sitio utilizando el servidor web de desarrollo de Visual Studio, asp.net manejará todas las solicitudes para que se ejecute su HttpModule.
En IIS6 esto no debería suceder a menos que esté configurado para reenviar las solicitudes a asp.net.
Entonces resultó que lo que estaba sucediendo era lo siguiente:
- la solicitud entra para (decir) http: // website / products / productid
- IIS no puede encontrar esto, por lo tanto obtenemos un 404
- por casualidad tenemos una página de error personalizada configurada en IIS para 404s
- esta página de error pega la URL de referencia al final de la página 404 error.aspx
así que obtenemos un redireccionamiento en asp.net en la línea de:
http: //website/error.aspx? 404; http: // sitio web / productos / productid
nuestras expresiones regulares de reescritura de URL se configuraron ahora de tal manera que descartaron el bit error.aspx y trataron con http: // website / products / productid como si fuera la URL real
- As asp.net renderiza http: //website/product.aspx? id = productid según lo solicitado.
Supongo que esto podría ser un truco útil para alguien, pero nos estamos moviendo a un filtro isapi. ¡Uno de los avisos es que esto conducirá por defecto a un circuito cerrado de redireccionamientos!
Si está utilizando un IIS6 con ASP.net 4.0, debe especificar y registrar los módulos de esta manera:
<system.web>
<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
no
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
</modules>