Question

J'ai une application ASP.NET MVC que je souhaite déployer à la fois sur IIS6 et IIS7 et, comme nous le savons tous, IIS6 a besoin de la mention ".mvc" dans l'URL.

Ce code fonctionnera-t-il pour s’assurer qu’il fonctionne sur toutes les versions de IIS? Sans avoir à effectuer d’ajustements spéciaux dans le code, les fichiers global.asax ou les fichiers de configuration pour les différentes versions de 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 Web hébergé, aucun contrôle sur le serveur IIS.

Était-ce utile?

La solution

Cela devrait résoudre le problème .mvc car le pipeline intégré est strictement IIS7. N'oubliez toutefois pas de modifier les paramètres du site Web IIS7 pour qu'ils utilisent "2.0 Integrated Pipeline". sinon, il retournera faux également. Également, vous pouvez également configurer le mappage de .mvc avec la DLL aspap isapi, mais je suppose que vous le savez déjà.

Quelques petites suggestions sur d'autres points à retenir lors du déploiement d'applications MVC sur IIS6 et que j'ai trouvées utiles: http://msmvps.com/blogs/omar/archive/2008/06/30/deploy-asp-net-mvc-on-iis-6-solve-404-compression- and-performance-problem.aspx

Autres conseils

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

Regardez, par exemple, ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top