2010-08-30 17 views
6

Estoy tratando de habilitar las URL reescritas en mi proyecto. está muy bien descrito en esta publicación: urlrewriting by scottgu Funciona muy bien cuando estoy ejecutando en localhost, pero tan pronto como lo cargo en mi host (.net 3.5), ¡no funciona! ¡siempre me redireccionan a una página 404!Reescritura de URL con asp.net. ¿Hay alguna configuración necesaria?

¿Hay alguna configuración necesaria para habilitar esto? como ScottGu dice que no, pero yo no encuentro por qué no está funcionando ...

gracias

// ACTUALIZACIÓN 2.09.2010

¿Existe en realidad una manera de habilitar el enrutamiento o volver a escribir sin tener iis7 o la capacidad de instalar un modul como ISAPI Rewrite en el servidor? Parece que tengo un host de asp.net malo ...

+0

¿Has intentado ver cómo se reescribe tu URL en Application_BeginRequest? – mamoo

+1

¿Cuál es la versión de su IIS? – Adeel

+0

¿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

Respuesta

4

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:

  1. Abra el Administrador de IIS y haga clic derecho en la página web, seleccione Propiedades
  2. En la ficha "Directorio", haga clic en "Configuración ... "botón.
  3. Haga clic en el botón "Insertar ..." para insertar un mapa de la aplicación Comodín.
  4. 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).
  5. Recuerde desmarcar "Verificar que el archivo exista"
  6. 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 :-)

+0

muchas gracias! genio! – k0ni

+0

pero me interesaría saber cómo esto afecta el rendimiento y otras cosas ... ¿es esta la manera correcta de hacerlo? thx – k0ni

+0

Esa es la forma de ejecutar ASP.NET MVC en IIS6, pero todas las solicitudes, incluso para contenido estático, pasan por la canalización de ASP.NET y el rendimiento se resiente. Puede usar mscd.codeplex.com para evitar esto. – dariol

1

Hay dos maneras de obtener las rutas sin extensión en IIS 6:

a) reescritura de ISAPI u otro regrabadora ISAPI url
b) el uso de una asignación de comodín a aspnet_isapi.dll

Consulte this blog post para obtener instrucciones detalladas.

Cuestiones relacionadas