【问题标题】:upgrade from mvc 4 (4.5) to mvc 5 (4.5.1)从 mvc 4 (4.5) 升级到 mvc 5 (4.5.1)
【发布时间】:2013-11-25 23:30:25
【问题描述】:

我需要将在 VS 2012 (.NET Framework 4.5) 中开发的 MVC 4 项目升级到 MVC 5 (.NET Framework 4.5.1)。

第一个场景

我已经按照 asp.net (http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2) 上的教程进行操作。项目构建成功,但运行时出现错误:403.14 - Web 服务器配置为不列出此目录。 目录浏览被禁用(正确)。这应该映射到 /home/index?我已经通过在站点中放置一个静态 html 文件来确认 DNS/绑定正在工作,并且工作正常。

第二种情况

我在 VS2013 中创建了一个空项目并复制/包含所有文件。它构建成功并在本地机器上运行良好,但是当我将它发布到服务器时出现错误:403 - 禁止访问:访问被拒绝。我还通过在站点中放置一个静态 html 文件来确认 DNS/绑定正在工作。

我也尝试将应用程序的“旧版本”(MVC 4)发布到服务器,它工作正常。

IDE:VS 2013 .NET 框架:4.5.1 本地操作系统:Win 7 SP1 服务器:Win Server 2012 标准版

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    首先你需要更新所有现有的 nuget 包。因为有些与新的不兼容。在执行此操作之前,请备份您现有的 应用

    第 1 步:将框架更改为 4.5.1。您需要通过右键单击项目将目标框架更改为至少 4.5。

    第二步: 然后您需要在解决方案级别更新包。因为它将获得更新所有项目中的包的能力 在解决方案中。为此,右键单击解决方案并选择“管理解决方案的 Nuget 包”选项。

    Step3 : 从安装包中选择Microsoft.AspNet.Web.Helpers.Mvc包并卸载它。因为它在新版本中被重命名,MVC5。要卸载,请单击“管理”按钮并取消选中 Web 项目,然后单击“确定”。

    Step4:然后进入更新包,更新一些包,如Microsoft.ASP.NET MVC,Entity Framework 和WebApi version 2。我的策略是更新到顶级包。更新时它会更新一些其他包。现在您可以看到 packages.config 文件中的更改,例如 MVC4 到 MVC5,Razor 版本从 2 更改为 3 以及网页版本从2到3。

    Step5:在我们的配置文件中更改版本,如下所示。

    这些是顶级配置文件中的更改

    第 6 步: 然后您还需要在视图配置文件中进行一些更改,例如在配置文件的所有部分中将 razor 版本更新为 3,MVC 版本更新为 5

    第 7 步: 再安装一个软件包。转到管理 nuget 管理器选项 >> 选择在线表格 >> 搜索 Microsoft.Aspnet.Webhelpers 并安装包。

    **第8步:**卸载webproject并右键单击并选择edit proj选项并删除以E3开头的guid,因为我们在新项目中不需要这个guid。

    再次保存并重新加载项目并构建并运行应用程序 希望这些信息对你有帮助

    【讨论】:

    • 我已经通过在 Win 8 机器上进行升级来完成它。它在 Win 7 机器上不起作用。
    【解决方案2】:

    我在将 MVC 4 项目升级到 MVC 5 时遇到了这个问题。

    在我的例子中,罪魁祸首是默认路由是{controller}/{action}/{id},但默认值没有指定id 路由令牌是可选的(即UrlParameter.Optional)。现在,IIS 没有提示找不到匹配的路由,而是进入静态文件处理程序,然后假定您正在尝试浏览Web 服务器,因为 URL 中没有扩展名,因此出现 403 Forbidden 错误。

    因此,要解决此问题,请确保您的默认路由为所有路由令牌提供默认值;就我而言,这看起来像这样

    routes.MapRoute(
        null, 
        "{controller}/{action}/{id}", 
        new { controller = "Home", action="Index" id = UrlParameter.Optional });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2017-05-08
      • 1970-01-01
      • 2016-06-29
      • 2013-11-28
      相关资源
      最近更新 更多