En su entorno localhost ustedes probablemente se ejecuta el sitio web en el servidor de desarrollo de ASP.NET. Ese servidor está configurado para capturar todas las solicitudes (*. *) Y ejecutarlas a través de la canalización de ASP.NET.
II6 por el contrario, está configurado para enviar solo algunas solicitudes (es decir, * .aspx, * .asmx, * .ashx) a través de la canalización de ASP.NET. Por lo tanto, si intenta captar una solicitud de una URL como "/ my/fine/url", nunca se pasará al controlador de ASP.NET y, por lo tanto, no se reescribirá.
Puede cambiar esta configuración en la configuración de aplicaciones para el sitio web:
- Abra el Administrador de IIS y haga clic derecho en la página web, seleccione Propiedades
- En la ficha "Directorio", haga clic en "Configuración ... "botón.
- Haga clic en el botón "Insertar ..." para insertar un mapa de la aplicación Comodín.
- En "Ejecutable:" inserte camino hacia aspnet_isapi.dll, en mi caso C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll (nota: este camino puede ser diferente en su servidor).
- Recuerde desmarcar "Verificar que el archivo exista"
- Haga clic en Aceptar!
¡Y así! Todas sus solicitudes ahora deben dirigirse al controlador ASP.NET y, por lo tanto, atrapadas en su reescritura de URL, independientemente de la extensión.
Pero debo admitir que no estoy seguro de cómo esto afectará el rendimiento en su sitio, enrutando todas las solicitudes de archivos estáticos, CSS, imágenes, etc. a través del controlador ASP.NET. Tal vez alguien más tiene algo que decir al respecto.
/Dennis :-)
¿Has intentado ver cómo se reescribe tu URL en Application_BeginRequest? – mamoo
¿Cuál es la versión de su IIS? – Adeel
¿cómo puedo ver esto? im usando este método: void Application_BeginRequest (remitente del objeto, EventArgs e) { cadena fullOrigionalpath = Request.Url.ToString(); if (fullOrigionalpath.Contains ("/ Products/Books.aspx")) { Context.RewritePath ("/ Products.aspx? Category = Books"); }} .... – k0ni