Windows 更新后 System.Web.Mvc 未按预期运行

Posted

技术标签:

【中文标题】Windows 更新后 System.Web.Mvc 未按预期运行【英文标题】:System.Web.Mvc not functioning as expected after Windows Update 【发布时间】: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 项目可能出了什么问题,我应该如何纠正它?

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

【问题讨论】:

相关? ***.com/questions/26406804/… 已在相关问题中解决^^ 微软声明:blogs.msdn.com/b/webdev/archive/2014/10/16/… 【参考方案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 的更改. 我想有人可能有类似的情况。

【讨论】:

以上是关于Windows 更新后 System.Web.Mvc 未按预期运行的主要内容,如果未能解决你的问题,请参考以下文章

windows update更新后怎么一键恢复

Creators Update 后 Windows 10 终于不会自说自话更新重启了

Windows 更新后不需要的 C++ 项目重建

Windows 7停止支持后,如何免费获得安全更新?

Windows 更新 1903 后 Composer 无法使用 laravel

Windows 2004 更新后无法以其他用户身份运行 EXCEL.EXE