ASP.NET MVC:使路由/ URL对IIS6和IIS7友好
时间:2020-03-06 14:29:26 来源:igfitidea点击:
我有一个ASP.NET MVC应用程序,我希望将其同时部署在IIS6和IIS7上,众所周知,IIS6需要URL中的" .mvc"命名。
这段代码是否可以确保在所有IIS版本上都适用?无需针对不同的IIS版本对代码,global.asax或者配置文件进行特殊调整。
bool usingIntegratedPipeline = HttpRuntime.UsingIntegratedPipeline; routes.MapRoute( "Default", usingIntegratedPipeline ? "{controller}/{action}/{id}" : "{controller}.mvc/{action}/{id}", new { controller = "Home", action = "Index", id = "" } );
更新:忘了提。没有ISAPI。托管网站,无法控制IIS服务器。
解决方案
我们可以使用ISAPI筛选器重写URL,这将使我们仍可以在IIS 6上使用漂亮的URL。
看,例如,这里
由于集成管道严格是IIS7,因此应该可以解决.mvc问题。
但是请记住,要在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