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 未按预期运行的主要内容,如果未能解决你的问题,请参考以下文章
Creators Update 后 Windows 10 终于不会自说自话更新重启了