3

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

4

2 回答 2

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

于 2008-09-20T19:37:22.567 回答
0

您可以使用 ISAPI 过滤器重写 URL,这将允许您在 IIS 6 上仍然拥有漂亮的 URL。

例如,看这里

于 2008-09-20T19:33:22.980 回答