应用对象
.NET Framework 3.5 Service Pack 1 Windows 7 Service Pack 1 Windows 7 Enterprise Windows 7 Professional Windows 7 Ultimate Windows 7 Home Premium Windows 7 Home Basic Windows 7 Enterprise Windows 7 Professional Windows 7 Ultimate Windows 7 Home Premium Windows 7 Home Basic Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Standard Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Datacenter Windows Server 2008 Service Pack 2 Windows Server 2008 for Itanium-Based Systems Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 Web Edition Windows Vista Service Pack 2 Windows Vista Business Windows Vista Enterprise Windows Vista Home Basic Windows Vista Home Premium Windows Vista Starter Windows Vista Ultimate Windows Vista Enterprise 64-bit Edition Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Vista Business 64-bit Edition Microsoft Windows Server 2003 Service Pack 2 Microsoft Windows XP Professional x64 Edition Microsoft Windows XP Service Pack 3 Microsoft Windows XP Home Edition Microsoft Windows XP Professional

摘要

安全更新 2638420(参见安全公告 MS11-100)将更改 ASP.NET 创建 Forms 身份验证票证的方式。此新行为与之前的行为不兼容。使用旧行为的服务器无法读取使用新行为生成的票证,反之亦然。因此,如果您使用采用 Forms 身份验证的应用程序,则在部署安全更新 2638420 时必须执行特定步骤,以确保所有服务器同时使用新行为。

部署指南

由于票证行为发生更改,其应用程序使用 Forms 身份验证的管理员在部署安全更新 2638420 时,必须执行特定步骤以确保所有服务器同时切换至新行为。若要确定您的应用程序是否使用 Forms 身份验证,请检查 System.web 文件。使用 Forms 身份验证的应用程序会在 System.web 文件中使用以下条目:

<authentication mode="Forms">备注

  • 默认身份验证模式是“Windows”。

  • ASP.NET 仅在明确配置的情况下才会使用 Forms 身份验证。

如果您使用采用 Forms 身份验证的应用程序,您必须使用以下方法之一部署安全更新 2638420,以确保您的网站能继续正常运行。方法 1将安全更新 2638420 同时部署到 ASP.NET Web 场中的所有活动服务器。为此,请按照下列步骤操作:

  1. 从负载平衡器旋转移除 Web 场中的一半服务器。

  2. 在这些服务器上安装更新。

  3. 将这些服务器重新添加至旋转,同时将剩余服务器设置为脱机状态,从而进行更新。

方法 2如果无法将安全更新 2638420 同时部署到 Web 场中的所有服务器,请改为使用此方法。注意 我们建议您不要使用此方法。设置此开关时,您可以将安全更新安装在 Web 场中的部分服务器上,然后使用旧行为继续运行。但是,使用此配置开关的服务器将会处于不安全状态,且不会实现安全更新中的所有修复。因此,应在将安全更新 2638420 部署到 Web 场中的所有服务器后尽快删除此配置开关,以便启用新的安全行为。安装安全更新 2638420 之前,在 Web.config 或 Machine.config 文件中设置兼容开关,以便在安装更新时强制旧行为。为此,请按照下列步骤操作:

  1. 使用文本编辑器(如 Notepad)打开 Web.config 文件或 Machine.config 文件。

  2. 将以下文本添加至文件,然后保存该文件:

    <appSettings><add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" /></appSettings>更新并保存 Web.config 或 Machine.config 文件后,无需重新启动计算机或任何服务。配置更改通知将自动循环应用程序池。

您可以在以下位置找到 Web.config 文件:.NET Framework 版本 4.0 至 4.5

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Web.configC:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Web.config .NET Framework 版本 2.0 – 3.5 SP1

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.configC:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Web.config 在 32 位计算机上,只存在 Framework 文件夹。在 64 位计算机上,存在 Framework 和 Framework64 两个文件夹。因此,如果您拥有运行 CLR 2 及 CLR 4 的 32 位和 64 位应用程序池,则必须将该条目添加至这四个文件。此外,如果您将 <appSettings> 条目也添加至这些配置文件,则将产生系统范围的更改。

已知问题

  • 安装安全更新 2638420 后,票证解密失败启用新的票证行为后,所有使用旧行为生成的 Forms 身份验证票证将失效。出现此问题时,最终用户将注销,并且服务器管理员可能会遇到票证解密失败问题。此外,事件日志中会记录以下错误消息:

    日志名称:应用程序事件 ID: 1315事件代码: 4005事件消息:此请求的 Forms 身份验证失败。原因:提供的票证无效。

    这些失败可能会导致意外行为。例如,如果网页受 <authorization> 元素保护,则可能会出现“HTTP 401”或“HTTP 302”错误。 安装安全更新 2638420 后,管理员可能会遇到若干票证解密失败问题,因为以前生成的票证已过期。由于会生成新票证,失败次数和频率应随时间的推移逐渐减少。安装安全更新后,如果在较长时间内仍出现解密失败问题,这说明 Web 场中的某些服务器仍在使用旧的票证行为。例如,满足以下两个条件之一时将出现此问题:

    • 一个或多个服务器未安装安全更新 2638420。

    • 一个或多个服务器设置了上述兼容开关。本文章前面部分已对兼容开关做了介绍。

更多信息

TicketCompatibilityMode 配置开关不再受支持由于安全更新 2638420 会更改 Forms 身份验证票证的格式,因此,如果安装并启用安全更新 2638420,将不再支持 <forms/ticketCompatibilityMode> 配置开关。 有关 <forms/ticketCompatibilityMode> 配置开关的详细信息,请访问以下 MSDN 网站:

有关

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。