在哪里可以找到关于在ASP.NET上运行IIS6 MVC的最佳实践的一些好的提示呢?
我还没有看到任何现实的选择,为网络主机谁提供IIS7 7-主机。主要是因为我不住在美国。
因此,我想知道如何最好地使用ASP.NET MVC构建应用程序,并使其易于在IIS6和IIS7上部署。请记住,这是为标准的网络主机,所以没有访问ISAPI过滤器或IIS6内部的特殊设置。
在开发ASP.NET MVC应用程序以IIS6为目标时,还有什么需要考虑的吗?有什么功能不起作用吗?
更新:更大的问题之一是路线的问题。模式{控制器}/{action}将在IIS7上工作,但不适用于需要{controller}..mvc/{action}的IIS6。那我怎么才能让这个透明呢?同样,没有ISAPI和无IIS-设置,请.
发布于 2008-11-25 00:43:54
这花了我一点时间,但我想出了如何使扩展与IIS6一起工作。首先,您需要重新设计包含.aspx的基本路由,以便通过ASP.NET ISAPI筛选器路由它们。
routes.MapRoute(
"Default", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);例如,如果您导航到Home.aspx,您的站点应该运行良好。但是Default.aspx和http://[website]/的默认页面地址停止正常工作。那怎么解决呢?
你需要定义第二条路线。不幸的是,使用Default.aspx作为路由不能正常工作:
routes.MapRoute(
"Default2", // Route name
"Default.aspx", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);那你是怎么让这件事起作用的?这就是您需要原始路由代码的地方:
routes.MapRoute(
"Default2", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);当您这样做时,Default.aspx和http://[website]/都重新开始工作,我认为这是因为它们成功地映射回了Home控制器。因此,完整的解决方案是:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"Default2", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}而且你的站点应该可以在IIS 6下正常工作(至少在我的电脑上是这样的)。
另外,如果您在页面中使用Html.ActionLink(),则不必在整个站点中更改任何其他代码行。该方法负责对控制器的.aspx扩展进行适当的标记。
发布于 2008-08-30 12:31:04
由于无法修改IIS设置将.mvc映射到ASP.Net,所以可以使用已经映射到ASP.Net的不同扩展。例如,您可以使用{controller}..ashx/{action},并且它应该在IIS 6上使用。
发布于 2008-08-29 16:58:31
如果您可以在服务器上安装ISAPI过滤器,则不必使用该扩展。
基本上,您将匹配的url路由到{控制器} .mvc品种,然后在ASP.NET中重写这个url以删除.mvc --这样就不必定义任何额外的路由或向用户公开.mvc。
我在这里写过:http://www.flux88.com/UsingASPNETMVCOnIIS6WithoutTheMVCExtension.aspx
Sanderson在这里也有一个很好的帖子:http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
https://stackoverflow.com/questions/34194
复制相似问题