2008-09-20 3 views
3

J'ai une application ASP.NET MVC que je veux déployer à la fois sur IIS6 et IIS7 et comme nous le savons tous, IIS6 a besoin du nom ".mvc" dans l'URL.ASP.NET MVC: Création de routes/URL IIS6 et IIS7-friendly

Ce code fonctionnera-t-il pour s'assurer qu'il fonctionne sur toutes les versions IIS? Sans avoir à faire des ajustements spéciaux dans le code, global.asax ou les fichiers de configuration pour les différentes versions IIS.

bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline; 

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

Mise à jour: Vous avez oublié de mentionner. Pas d'ISAPI. Site hébergé, aucun contrôle sur le serveur IIS.

Répondre

3

Cela devrait résoudre le problème .mvc depuis le pipeline intégré est IIS7 strictement. Mais n'oubliez pas de modifier les paramètres sur le site Web IIS7 pour utiliser "2.0 Integrated Pipeline", sinon il retournera false aussi. Aussi ofcouse configurer le mappage de .mvc à la DLL isapi asp.net, mais je devine que vous le savez déjà.

Quelques petites suggestions sur d'autres choses que vous pourriez avoir besoin de se rappeler lors du déploiement des applications MVC sur IIS6 que je utiles: http://msmvps.com/blogs/omar/archive/2008/06/30/deploy-asp-net-mvc-on-iis-6-solve-404-compression-and-performance-problems.aspx

0

Vous pouvez utiliser un filtre ISAPI pour réécrire les URL qui vous permettront d'avoir les belles URL tout en restant sur IIS 6.

Regardez, par exemple, here

Questions connexes