将 asp.net Mvc 从 3 降级到 2
Posted
技术标签:
【中文标题】将 asp.net Mvc 从 3 降级到 2【英文标题】:Downgrade asp.net Mvc from 3 to 2 【发布时间】:2011-07-24 08:57:52 【问题描述】:我知道这是一个相当奇怪的问题,请不要喷我:)
我确实需要将当前的 Asp.Net Mvc 3 (net framework 4) 应用程序“降级”为 Asp.Net Mvc 2 (net framework 3.5),因为我们的共享主机提供商不支持 .Net 4(我知道考虑到它自 2010 年 4 月 12 日开始零售,第一个测试版于 2009 年 5 月发布,这真是太疯狂了,但这不是帖子的重点)。
是否有任何工具、指南或任何可以在此过程中提供帮助的东西?我有点迷茫,因为我升级了许多应用程序,但我从来没有降级过一个。
除了严格的 MVC 之外,我还使用 EF Code First 的数据层(也许 nhibernate 将是替代它的最佳工具?)
任何帮助、提示、信息,任何值得赞赏的东西。
谢谢。
编辑:更改托管服务提供商不是一种选择,否则我根本不会发布此内容。我个人反对这种降级——我觉得它完全没有意义——但它仍然是唯一的选择。
【问题讨论】:
Mb 更改“共享主机提供商”比降级项目容易吗? 不能更改主机,请检查我的编辑。 是的,我明白了。那么祝你好运;) 也许会更努力地说服那些认为改变主机“不是一种选择”的人改变主意。 如果他们害怕改变,那么你的工作可能很安全 - 拒绝这样做,并坚持使用新主机;) 【参考方案1】:我能想到的唯一方法是获得一台安装了 MVC 2 的机器,获取项目并尝试编译它以 .NET 3.5 为目标。
这会产生很多错误。
实际上 - 这可能是说服那些持有您需要更改托管服务提供商的钱包的人的方法。您可以向他们展示错误列表并估计修复它们需要多长时间。如果这是很长一段时间(几周?),那么搬家可能更划算。
【讨论】:
【参考方案2】:我会更换托管服务提供商。如果您的提供商现在不支持 .NET 4.0,那么您真的想与他们建立长期关系吗?下一个新的伟大功能发布会发生什么,他们需要多长时间来实现它?如果他们提供这种服务,我认为那里没有任何未来。
这么说,如果你别无选择,只能留在他们身边,那么我认为你唯一的选择就是
-
在 Visual Studio 中将项目的目标框架设置更改为 3.5。
删除 MVC 3 并添加 MVC 2
将所有 Razor 视图更改为 Web 窗体视图引擎语法
重新编译并解决所有错误
对于您的 web.config 文件,我将创建一个新的 MVC 2 项目并从该 web.config 复制旧配置所需的任何额外设置。
根据项目的规模,这显然是一项艰巨的任务。
【讨论】:
虽然我完全同意这样的托管服务提供商根本不可靠或不专业,但我的公司不会改变它。因为我们托管了数十个网站,并且“迁移所有内容会花费太多和花费太多时间”。我知道我们可以有 2 个不同的提供者(新的东西和旧的东西),但他们完全反对。因为我被拒绝将 Mercurial 用于新的东西,因为旧的东西在 SVN 上并且“我们不能有 2 个不同的版本控制系统,我们不能迁移所有东西”。 好吧,那恐怕是手动更新了。如果这是一个使用 Razor 且到处都是dynamic
的大型项目,那么这显然将是一项艰巨的任务。如果您使用的是 Web 表单视图引擎并且没有真正使用 dynamic
,那么它可能还不错。
它在 ViewBag 中使用剃须刀,所以我注定要失败。【参考方案3】:
您可以轻松地将 asp.net 4.0 网站转换为 asp.net 2.0
-
新建一个网站
然后选择 .net Framework 2.0
从新网站文件夹中的 asp.net 4.0 网站文件夹中复制除 web.config 文件之外的所有文件
从所有 .vb 或 .cs 文件中删除未使用的 usings
轻松运行网站
【讨论】:
我现在才读到这个,整整一年半了,看来你连我的问题都懒得看,如果你读了,你显然不知道是什么我在谈论。在 .Net 版本和 Mvc 版本中降级 MVC 项目并非易事。你最好检查一下大卫格伦的回答,因为他做得很好。以上是关于将 asp.net Mvc 从 3 降级到 2的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?
从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用