【问题标题】:System.Web.Mvc not functioning as expected after Windows UpdateWindows 更新后 System.Web.Mvc 未按预期运行
【发布时间】:2014-12-11 08:28:22
【问题描述】:

在昨天的 Windows 更新之后,我似乎在构建我的项目时遇到了问题。

Related Windows Updates could be:
ASP.NET MVC 2.0: KB2993939
ASP.NET MVC 3.0: KB2993937
ASP.NET MVC 4.0: KB2993928
ASP.NET MVC 5.0: KB2992080
ASP.NET MVC 5.1: KB2994397

这些错误似乎都与我检查的System.Web.Mvc 命名空间有关;它仍然与References 下的项目相关联。在 Windows 更新期间我的 MVC 项目可能出了什么问题,我应该如何纠正它?

这是指示今天管理的更新的日志:

【问题讨论】:

标签: c# asp.net-mvc namespaces windows-update


【解决方案1】:

最近的更新增加了版本号

3.0.0.0 -> 3.0.0.1 和 4.0.0.0 -> 4.0.0.1

我不得不删除引用并重新添加(System.Web.Mvc 位于程序集中>扩展是添加引用对话框的)

【讨论】:

  • 这可行,但我的解决方案中有很多项目,我不想重新引用每个项目的程序集......
  • @matt 你可以对项目文件进行查找和替换,将System.Web.Mvc, Version=4.0.0.0, 替换为System.Web.Mvc, Version=4.0.0.1,
  • 这仅解决了我的部分窗口“更新问题”。此外,我必须将连接字符串更改为命名实例。我有两个 SQL Server 实例(2008 年和 2012 年),在 2014 年 10 月 Windows 更新后,localhost 开始指向第二个 sql server 实例。
【解决方案2】:

Windows 更新后我今天也遇到了同样的问题。 有我的解决方案。

Install-Package Microsoft.AspNet.Mvc -Version 5.2.0.0 -Project PROJECTNAME

您也可以尝试使用这些代码,也许会有所帮助。

Uninstall-Package Microsoft.AspNet.Mvc -Force

祝你好运。

【讨论】:

  • 微软对此问题发表了声明。他们说像我一样。 There is link@matt
  • -1: 1. MVC 5.2.x 不受MS14-059 的影响; 2. 5.2 已被 5.2.2 取代(远早于 MS14-059)。
  • windows 更新后我的项目 mvc 5.2.0.0 全部更新为 5.2.2.0。
  • Install-Package Microsoft.AspNet.Mvc 为我工作。整个解决方案现在在v5.2.2.0
【解决方案3】:

有两种方法可以解决这个问题:

选项 1:使用 NuGet 添加 Microsoft.AspNet.Mvc

使用 NuGet 将您依赖的 MVC 版本的最新版本添加到您的项目中。 Microsft 推荐这种方法。

选项 2:更新程序集参考

如果您向项目添加新的程序集引用,您会看到 System.Web.Mvc 程序集现在版本化为 x.0.0.1。


来源:http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

我建议不要直接尝试重新安装 MVC。尽管它最终对我有用,但你会遇到 NuGet 与 MVC 安装程序捆绑在一起的问题。

您需要在重新安装 MVC 之前卸载 NuGet,因为 NuGet 仍然存在会导致 MVC 安装程序拒绝安装或失败。

此外,我不明白为什么重新安装 MVC 会阻止 Windows 更新在重新安装 MVC 后再次应用更新。

【讨论】:

    【解决方案4】:

    随着补丁的增加,版本号已经从(对于 MVC4 已经从 4.0.0.0 上升到 4.0.0.1),项目文件中的参考路径需要更改为:

    <Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <Private>True</Private>
      <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
    </Reference>
    

    <Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\bin\System.Web.Mvc.dll</HintPath>
    </Reference>
    

    显然适当调整提示路径,对其他版本的MVC做类似的改变

    【讨论】:

      【解决方案5】:

      我们有同样的问题。
      Microsoft 将版本从 3.0.0.0 更改为 3.0.0.1
      我猜这是 Visual Studio 找不到参考的原因,因为常规设置是“使用特定版本 - 真”。
      在我的情况下,我无法将设置更改为 false,因为我在同一台机器上使用 Mvc4,它会自动使用版本 4 dll。

      解决办法是把System.Web.Mvc.dll的项目引用去掉,重新添加。然后VS会使用Version-3.0.0.1-DLL作为参考。

      【讨论】:

        【解决方案6】:

        重新安装 MVC 程序集

        下载链接:http://www.microsoft.com/en-US/download/details.aspx?id=30683

        【讨论】:

          【解决方案7】:

          我尝试了mh28的解决方案,它提出了以下建议:

          最近的更新增加了版本号

          3.0.0.0 -> 3.0.0.1 和 4.0.0.0 -> 4.0.0.1

          我不得不删除引用并重新添加(System.Web.Mvc 位于 程序集>扩展是添加引用对话框的)

          除此之外,还建议我在我感兴趣的范围内运行查找和替换;我试过了,但失败了。似乎 查找和替换 不适用于 .csproj 文件。

          我接下来要做的是找到一个文本替换工具(参见Ecobyte Replace Text)并使用以下设置运行程序:

          此后我的所有项目都按正常方式构建,我没有看到任何副作用(尽管没有对web.config 文件进行任何更改)。我不确定(我不认为)这是最好的解决方案,而且我认为这不是解决所有System.Web.Mvc 受 .NET 安全相关 Windows 更新影响的问题的灵丹妙药,但我认为这对于需要重新参考大量项目的特定情况很有用。

          【讨论】:

          • 不需要第三方工具,Visual Studio 中的 CTRL+Shift+F(在文件中查找)和 CTRL+Shift+H(在文件中替换)是你的朋友 ;-)
          【解决方案8】:

          尝试使用 here 提供的最新版本的 MSI 包 安装/修复 ASP.NET MVC。

          如果您在web.config 中使用bindingRedirect,也可能需要(在我的项目中不需要)更新这些部分。见the answer。这一切仍然无济于事,我建议您检查项目中的 other web.config 文件,例如 ~/Views/web.config

          【讨论】:

            【解决方案9】:

            我最近遇到了同样的问题。

            在 Windows 更新之后 - 我在 Visual Studio 中的项目突然出现 500 多个错误 - 都与 system.web.mvc 相关

            所以我删除了引用并重新添加了它 - 在 C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies 中找到

            很好 - 项目编译。

            将其放在现场 - 获取“无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息”

            经过一番折腾,我去了网站,在那里下载了它的版本 - 引用了它 - 它可以在我的笔记本电脑和网站上运行

            呼!!!!!!!

            【讨论】:

              【解决方案10】:

              这个问题对我来说是存在的。但是,该修复比使用 nuget 修复或更新 web.config 要简单得多。 我的问题已通过手动更新 {ProjectName}.csproj 中的文本从

              得到解决

              参考 Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"

              Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" ,并检查更改,并在构建代理机器中运行构建,对我来说,这就是 TeamCity。

              尽管这导致了本地构建错误,但它解决了源代码控制/Team City 构建错误。

              我意识到这不允许我在本地构建,而无需更改 csproj 文件。但是,在我按照上面所做的检查更改后(将其从 3.0.0.1 更改为 3.0.0.0),我可以在本地更新项目以使用新版本(3.0.0.1),而不是检查对 csproj 的更改. 我想有人可能有类似的情况。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-07-14
                • 1970-01-01
                • 1970-01-01
                • 2021-11-22
                • 2018-08-08
                • 1970-01-01
                相关资源
                最近更新 更多