ASP.Net MVC路由和新的ASP.Net DynamicData站点路由之间有什么区别?
我只开始同时使用ASP.Net MVC和新的VS2008动态数据网站模板。我注意到它们在URL处理中都使用了路由,并且我了解到由于路由,ASP.Net MVC在IIS6下无法工作。但是,我的DynamicData网站在IIS6上可以正常工作。
由于IIS7的要求,我不得不暂时放弃对即将进行的项目的ASP.Net MVC的探索,并且我想知道两者之间的本质区别是什么,即是什么使DynamicData网站可以在IIS6和MVC不是吗?
解决方案
只要启用通配符映射到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之间没有分隔。
ASP.Net MVC和动态数据使用System.Web.Routing中包含的同一路由引擎,因此它们都可以在IIS6下工作。问题在于将请求映射到ASP.Net(如@Richard Szalay所述)。如果使用通配符映射,.mvc扩展名映射到ASP.Net或者已经映射到ASP.Net的另一个文件扩展名(.aspx,.ashx,.axd等),则MVC在IIS6下可以正常工作。在MVC路线中使用。
它们都可以直接在IIS6上工作,而无需修改IIS6. 我们只需要使用一些映射到asp.net isapi的扩展名,例如.aspx,.ashx或者类似名称。
此外,ASP.NET MVC可以在IIS6上正常运行!我在IIS6上运行Moslty,.html扩展名映射到asp.net isapi!
一些共享的托管服务提供商愿意对IIS6进行更改,以支持无扩展名的URL。如果他们不想这样做,我们可以要求他们将.html映射到asp.net,URL很不错,而且对seo友好。只是提一下;谷歌不介意我们是否拥有.aspx或者.html,就像没有扩展名一样。