我有一个 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 服务器。
最佳答案
这应该可以解决 .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
关于.net - ASP.NET MVC : Making routes/URLs IIS6 and IIS7-friendly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/109044/