我有一个ASP.NET MVC应用程序,我想在IIS6和IIS7上进行部署,众所周知,IIS6需要URL中的“.mvc”。
此代码是否可以确保它适用于所有IIS版本?无需对代码,global.asax或不同IIS版本的配置文件进行特殊调整。
bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline;
routes.MapRoute(
"Default",
usingIntegratedPipeline ?
"{controller}/{action}/{id}" : "{controller}.mvc/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
更新:忘记提及。没有ISAPI。托管网站,无法控制IIS服务器。
答案 0 :(得分:3)
这应该解决.mvc问题,因为集成管道严格来说是IIS7。 但是请记住将IIS7网站上的设置更改为使用“2.0 Integrated Pipeline”,否则它将返回false。 另外还要设置.mvc到asp.net isapi dll的映射,但我猜你已经知道了。
在我认为有用的IIS6上部署MVC应用程序时,您可能需要记住的其他一些小建议: http://msmvps.com/blogs/omar/archive/2008/06/30/deploy-asp-net-mvc-on-iis-6-solve-404-compression-and-performance-problems.aspx
答案 1 :(得分:0)
您可以使用ISAPI过滤器重写URL,这样您就可以在IIS 6上使用不错的URL。
例如,查看here