Forzar la reescritura de URL parametrizada por ASP.NET en el IIS

La reescritura de URL mediante el ASP.NET y el IIS, cuando no se gestiona a través de un método que implemente un módulo ISAPI programado instalado correctamente en el servidor de páginas Web, se debe emplear la definición de módulos o controladores HTTP programados a medida para llevar a cabo el proceso.

Sin embargo existe una gran desventaja respecto a este último método y es el de que para poder que actúe el ASP.NET en el proceso de petición de una página Web, éste debe ser invocado a través de las extensiones mapeadas en el IIS. De este modo, si la URL no contiene un nombre válido de archivo y una extensión .aspx, no se procesará la petición jamás con el manejador de HTTP que nosotros hayamos programado. Por ejemplo: Si disponemos de esta URL http://misitio.com/catalogo/ordenadores/portatiles.aspx, que se reescribe en http://misitio.com/catalogo.aspx?familia=ordenadores&subfamilia=portatiles, se procesaría sin problemas. Sin embargo, si tenemos una URL del estilo: http://misitio.com/catalogo/ordenadores/portatiles/, al no disponer de extensión .aspx, no será procesada por el motor de ASP.NET sino por el IIS, lo que arrojará un 404 de ruta inexistente. Salvo que creemos dicha ruta físcamente a través de carpetas “/catalogo/portatiles/” y creemos un Default.aspx vacío y lo guardemos en la misma.

Pero existe una forma de forzar que todas las peticiones pasen directamente al motor de ASP.NET. Lo que consiste en mapear todas las extensiones de archivos a la extensión de ASP.NET aspnet_isapi.dll. Para ello, debemos dirigirnos a la pestaña de aplicaciones del sitio Web al que queramos habilitar este soporte. Dentro de esta ficha, debemos especificar el parámetro “.*” (que indica claramente todas las extensiones) y limitar el alcance de dicha definición al HEAD, GET Y POST con el motor de script habilitado y que no este habilitado la casilla de “verificar si existe el archivo”.

Dejar un comentario

*