我有一个ASP.NET MVC应用程序,我希望在IIS6和IIS7上都可以部署,而且众所周知,IIS6需要URL中的“.mvc”-naming。

此代码是否可以确保它适用于所有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服务器。

有帮助吗?

解决方案

这应该解决.mvc问题,因为集成管道严格来说是IIS7。 但请记住更改IIS7网站上的设置以使用“2.0 Integrated Pipeline”。否则它将返回虚假状态。 另外还要设置.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-和性能problems.aspx

其他提示

您可以使用ISAPI过滤器重写URL,这样您就可以在IIS 6上使用不错的URL。

例如,请查看此处

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top