2012-04-27 10 views
5

que tal vez esperar demasiado de ASP.NET, pero en Apache es trivial para volver a escribir las direcciones URL que así lo solicite algo como: http://mysite/myfolder/mypage/niceurlparameter gestiona realidad para servir a página estática http://mysite/mypage.html¿Qué hay de malo con esta configuración de enrutamiento Global.asax?

¿Cómo hacer que en Global.asax?

He intentado esto:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html"); 

pero sigue volviendo 404 cuando i solicitud http://mysite/myfolder/mypage/niceurlparameter.

Sin embargo, esto funciona:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html"); 

así que se deje mipagina.html al solicitar http://mysite/myfolder/mypage.html/niceurlparameter.

Solo quiero deshacerme de la parte ".html" en mis URL. ¿Qué me estoy perdiendo?

ACTUALIZACIÓN: Por alguna razón, en el primer caso, el comodín '*' no se ha aceptado.

Cambiar a:

RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html"); 

aparece para encaminar la petición de página HTML, pero luego me sale el error:

There is no build provider registered for the extension '.html'. 

¿Por qué en el mundo que sólo iba a funcionar en el primer caso (con html en URL), y no cuando html queda fuera?

+0

¿Qué versión de IIS está ejecutando? Me parece recordar que IIS 6 no permitirá esto de la caja, necesita agregar una asignación de comodín. –

+1

Consulte esta pregunta para una posible solución: http://stackoverflow.com/q/9918066/25727 – Jan

+0

IIS es v7.5. El enlace sugerido ayudó. Gracias – tishma

Respuesta

3

There is no build provider registered for the extension '.html'

Recibirá este error porque los archivos html estáticos deben ser manejados por el IIS directamente. Sin embargo, en su caso, el marco ASP.NET MVC está tratando de manejar el archivo de tipo .html, que no puede.

Así que si crees que esto es lo que tienes que hacer, tendrás que crear un nuevo proveedor y registrarte en el archivo web.config. mira esta

Custom file extensions for ASP.NET - help needed!

Usted simplemente puede cambiar su contenido HTML estático a .aspx archivos. Una simple copia y pegar haría el trabajo y debería funcionar bien. Sabrá cómo manejar el tipo de archivo.

+1

Estoy aceptando esto, ya que en realidad resuelve el problema. Sin embargo, nunca escribiría nada personalizado que eventualmente permita que un servidor web sirva archivos estáticos (!?!) La reescritura de URL es un camino mucho mejor para toma si quieres redirección de archivos estáticos. IIS 7.5 y el módulo url rewrite 2 son el camino a seguir. – tishma

Cuestiones relacionadas