【问题标题】:What's the difference between ASP.Net MVC Routing and the new ASP.Net DynamicData Site routing?ASP.Net MVC Routing 和新的 ASP.Net DynamicData Site 路由有什么区别?
【发布时间】:2010-09-15 04:07:41
【问题描述】:
我才开始使用 ASP.Net MVC 和新的 VS2008 动态数据网站模板。我注意到他们在处理 URL 时都使用了路由,我知道由于路由,ASP.Net MVC 在 IIS6 下无法工作。但是我的 DynamicData 站点在 IIS6 上运行良好。
由于 IIS7 的要求,我不得不暂时放弃对 ASP.Net MVC 的探索,以进行即将进行的项目,我想知道两者之间的本质区别是什么,即是什么让 DynamicData 网站工作在 IIS6 和 MVC 上不行吗?
【问题讨论】:
标签:
asp.net-mvc
visual-studio-2008
.net-3.5
asp.net-dynamic-data
【解决方案1】:
只要你在enable wildcard mappings ASP.NET 下,ASP.NET MVC 确实可以在IIS6(和 IIS5 下)工作。我已经使用 IIS6 将 MVC 应用程序部署到生产环境,所以我可以保证这是可能的。
主要区别在于 DynamicData 中的所有 URL 都以带有 ASPX 扩展名的文件结尾,因此,无论物理是否存在,都会调用 ASP.NET 运行时(因为 ASPX 与 ASP.NET 相关联),而大多数 ASP.NET MVC 请求没有扩展(或具有 MVC 扩展,默认情况下未映射),因此需要 IIS 配置才能工作。
IIS7 自动工作,因为 IIS7 本身是托管的,因此 IIS/ASP.NET 之间没有分离。
【解决方案2】:
ASP.Net MVC 和 Dynamic Data 使用 System.Web.Routing 中包含的相同路由引擎,因此它们都在 IIS6 下工作。问题在于将请求映射到 ASP.Net(如@Richard Szalay 所述)。如果使用通配符映射,如果 .mvc 扩展名映射到 ASP.Net,或者如果另一个文件扩展名已经映射到 ASP.Net(.aspx、.ashx、.axd 等),则 MVC 将在 IIS6 下正常工作在您的 MVC 路由中使用。
【解决方案3】:
它们都在 IIS6 上开箱即用,无需修改 IIS6。您只需使用一些映射到 asp.net isapi 的扩展名,例如 .aspx、.ashx 或类似的。
此外,ASP.NET MVC 在 IIS6 上运行没有问题!我在 IIS6 上运行它,将 .html 扩展名映射到 asp.net isapi!
一些共享主机提供商愿意对 IIS6 进行更改以支持无扩展名 url。如果他们不想这样做,您可以要求他们将 .html 映射到 asp.net,网址很好,并且对 seo 友好。顺便提一下; google 不会介意你有 .aspx 或 .html,就像没有扩展名一样。