gpt4 book ai didi

.net - ASP.NET MVC 3.0.0.1 版安全补丁破坏了构建

转载 作者:行者123 更新时间:2023-12-03 04:43:58 24 4
gpt4 key购买 nike

安装 ASP.NET MVC 3 安全更新后 KB2990942 看来 MVC 版本从 3.0.0.0 增加至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: Could not resolve this reference. Could not locate the assembly "System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

这个说法很有道理。我的机器上不再存在此版本。

我无法保证开发计算机、构建服务器和生产服务器上的确切 MVC 版本。他们可能有3.0.0.03.0.0.1这可能随时改变。 Windows Update 可能随时发布新的 MVC 版本。另外,我不想在发布 MVC 更新时增加所有 *.csproj 文件中的版本号。

多个版本受到更新影响:

安全公告:MS14-059: Vulnerability in ASP.NET MVC Could Allow Security Feature Bypass (2990942)

处理这种情况的最佳方法是什么?我怎样才能打破构建和生产并保证 future MVC 更新的安全?

最佳答案

我通过以下方式解决了这个问题:

  • 删除 MVC 引用并向项目添加正确的引用。
  • 将引用的 Copy Local 属性更改为 true
  • 更新 web.config 中的 bindingRedirect 设置:

web.config 运行时部分:

<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>
...

更改复制本地设置将在您发布项目时将bin文件夹中的System.Web.MVC.dll文件包含在内,这样即使服务器没有更新新版本它也可以工作。

请注意,这样的更新很少发生。这是 MVC 3 自发布以来首次进行修补。服务器更新后,您应该能够将 Copy Local 更改回 false。下次微软进行这样的更新时,他们可能会知道首先解决这样的问题。

关于.net - ASP.NET MVC 3.0.0.1 版安全补丁破坏了构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com