Pregunta

Tengo una aplicación ASP.NET MVC que quiero implementar tanto en IIS6 como en IIS7 y, como todos sabemos, IIS6 necesita el nombre ".mvc" en la URL.

¿Funcionará este código para garantizar que funcione en todas las versiones de IIS?Sin tener que realizar ajustes especiales en el código, global.asax o archivos de configuración para las diferentes versiones de IIS.

bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline;

routes.MapRoute(
    "Default",
    usingIntegratedPipeline ?
        "{controller}/{action}/{id}" : "{controller}.mvc/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

Actualizar:Olvide mencionar.Sin ISAPI.Sitio web alojado, sin control sobre el servidor IIS.

¿Fue útil?

Solución

Eso debería solucionar el problema de .mvc ya que la canalización integrada es estrictamente IIS7.Pero recuerde cambiar la configuración en el sitio web de IIS7 para usar "2.0 Integrated Pipeline", de lo contrario también devolverá falso.También, por supuesto, configure el mapeo de .mvc al dll isapi de asp.net, pero supongo que ya lo sabe.

Algunas pequeñas sugerencias sobre otras cosas que quizás necesites recordar al implementar aplicaciones MVC en IIS6 que encontré útiles:http://msmvps.com/blogs/omar/archive/2008/06/30/deploy-asp-net-mvc-on-iis-6-solve-404-compression-and-performance-problems.aspx

Otros consejos

Puede usar un filtro ISAPI para reescribir las URL, lo que le permitirá tener URL agradables mientras aún está en IIS 6.

Mira, por ejemplo, aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top