ASP.NET MVC:使路由/ URL IIS6和IIS7友好

时间:2008-09-20 19:10:17

标签: .net asp.net-mvc iis url url-routing

我有一个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服务器。

2 个答案:

答案 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