安装 ASP.NET MVC 3 安全更新后KB2990942看来 MVC 版本增加了3.0.0.0
to 3.0.0.1
。这会导致 Visual Studio 不再找到引用。
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
Resharper 没有显示任何问题,但构建失败,并出现大量未解析的 MVC 类型和警告:
Warning:无法解析此引用。无法找到
程序集“System.Web.Mvc,版本=3.0.0.0,文化=中性,
PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL”。检查以
确保该程序集存在于磁盘上。如果需要此参考
根据您的代码,您可能会遇到编译错误。
这是有道理的。我的机器上不再存在该版本。
我无法保证开发机器、构建服务器和生产服务器上的确切 MVC 版本。他们可能有3.0.0.0
or 3.0.0.1
这可能随时改变。 Windows Update 可能随时发布新的 MVC 版本。另外,我不想在发布 MVC 更新时增加所有 *.csproj 文件中的版本号。
此次更新影响多个版本:
- KB 2993939:Microsoft ASP.NET MVC 2 安全更新
- KB 2993937:Microsoft ASP.NET MVC 3 的安全更新
- KB 2993928:Microsoft ASP.NET MVC 4.0 的安全更新
- KB 2992080:Microsoft ASP.NET MVC 5.0 的安全更新
安全公告:MS14-059:ASP.NET MVC 中的漏洞可能允许安全功能绕过 (2990942)
处理这种情况的最佳方法是什么?我怎样才能打破构建和生产并保证未来 MVC 更新的安全?
我通过以下方式解决了这个问题:
- 删除 MVC 引用并将正确的引用添加到项目中。
- 改变
Copy Local
引用的属性true
.
- 更新
bindingRedirect
设置在web.config
:
网络配置runtime
部分:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
...
改变Copy Local
设置将包括System.Web.MVC.dll
文件在bin
发布项目时的文件夹,以便即使服务器未使用新版本更新它也可以工作。
请注意,这样的更新很少发生。这是 MVC 3 自发布以来首次进行修补。你应该能够改变Copy Local
回到false
服务器更新后。下次微软进行这样的更新时,他们可能会知道首先解决这样的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)