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