当您访问的 ASP.NET 网页具有启用后从 ASP.NET 1.1 升级到 ASP.NET 2.0 的视图状态时,您可能会收到一条错误消息

文章翻译 文章翻译
文章编号: 911722 - 查看本文应用于的产品
重要本文包含有关如何修改注册表的信息。请确保您对其进行修改之前备份注册表。请确保您知道如何还原注册表发生问题。有关如何备份、 还原,以及修改注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986在 Microsoft Windows 注册表的说明
展开全部 | 关闭全部

本文内容

症状

从 Microsoft ASP.NET 1.1 升级到 Microsoft ASP.NET 2.0 后,某些基于 ASP.NET 的应用程序可能无法正确运行。此外,访问 ASP.NET 网页的已启用视图状态时, 您可能会收到以下错误消息:
[InvalidOperationException: 此实现不验证的 Windows 平台 FIPS 的加密算法的一部分]
System.Security.Cryptography.RijndaelManagedctor() +200 System.Web.Configuration.MachineKeySection.ConfigureEncryptionObject() +2088
System.Web.Configuration.MachineKeySection.EnsureConfig() +904
System.Web.Configuration.MachineKeySection.GetEncodedData Byte [] 缓冲区、 字节 [] 修饰符、 Int32 开始、 Int32 和长度 +88
System.Web.UI.ObjectStateFormatter.Serialize(Object stateGraph) +1320
System.Web.UI.Util.SerializeWithAssert(IStateFormatter formatter, Object stateGraph) +248
System.Web.UI.HiddenFieldPageStatePersister.Save() +280
System.Web.UI.Page.SaveAllState() +6488
+17240 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
--------------------------------------------------------------------------------
版本信息: Microsoft.net 框架 Version:2.0.50606.0 ; ASP.NET 版本: 2.0.50606.0

原因

当满足下列条件都为真时,会发生此问题:
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
    注册表子项设置为 1。
  • 处理视图状态数据时,ASP.NET 2.0 将使用 AES 算法 RijndaelManaged 的实现。ReindaelManaged 实现具有不被认证由美国国家标准和技术 (NIST) 为满足符合性要求与在联邦信息处理标准 (FIPS)。因此,AES 算法不是验证的 Windows 平台 FIPS 的加密算法的一部分。

替代方法

重要这些步骤可能会增加安全风险。这些步骤还会使计算机或网络更易于受到恶意用户或恶意软件 (如病毒的攻击。我们之所以推荐本文介绍以使程序能够按照它们被设计为运行或者为了实现特定的程序功能的过程。您在进行这些更改之前,我们建议您考虑在您的特定环境中实施这一过程相关联的风险。如果您决定实施此过程,采取任何适当的附加措施来帮助保护系统。我们建议您在真正需要这一过程的情况下,才使用此过程。

若要变通解决此问题,更改应用程序级别的 Web.config 文件中配置。指定 ASP.NET 使用三重数据加密标准 (3DES) 算法来处理视图状态数据。若要这样做,请按照下列步骤操作:
  1. 如记事本) 的文本编辑器中打开应用程序级别的 Web.config 文件。
  2. 在 Web.config 文件中找到该 <system.web> 部分。
  3. 添加以下 <machinekey> 到节中所 <system.web> 部分:
    <machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>
  4. 将保存在 Web.config 文件。
  5. 重新启动 Microsoft Internet Information Services (IIS) 服务。为此请在命令提示符处运行以下命令:
    iisreset
重要从理论上讲,3DES 算法是安全,AES (Rijndael) 算法。 我们建议您使用 AES 算法尽可能以帮助安全系统。

更多信息

重现此问题的步骤

警告如果您修改注册表错误地使用注册表编辑器或使用另一种方法,则可能会出现严重问题。这些问题可能需要重新安装操作系统。Microsoft 不能保证可以解决这些问题。修改注册表的风险由您自己承担。

您可以再现此问题之前,必须设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
1 以启用了 FIPS 兼容的算法策略的注册表子项。

这些步骤,然后退出注册表编辑器:
  1. 单击 开始、 单击 运行,键入 regedit,然后单击 确定
  2. 找到并单击下面的项在注册表中:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy
  3. 编辑 菜单上单击 修改
  4. 键入 1,然后按 ENTER 键。
注意您必须重新启动计算机,新设置才能生效。

若要重现该问题,请按照下列步骤操作:
  1. 在可视有关 Studio 的 2005 年在 文件 菜单上单击 新建网站,请单击 模板,类型下的 ASP.NET 网站DriveLetter: \ Path \KB911722位置 框,然后再单击 确定
  2. 在解决方案资源管理器中,用鼠标右键单击 Default.aspx,然后单击 打开
  3. 将现有代码替换下面 code.
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    	<title>Test Page for KB911722</title>
    </head>
    <body>
    <form id="Form1" runat="server" >
     <script language="C#" runat="server" > 
     public void Page_Load() 
     { 
     	Label1.Text = "EnableViewState attribute is set to " + Page.EnableViewState.ToString(); 
     } 
     </script> 
    
     <asp:Label id="Label1" runat="server" Text="text"></asp:Label>
    </form>
    </body>
    </html>
  4. 调试 菜单上单击 开始调试
您收到"症状"部分中提到的错误消息。

有关效果的详细信息,启用的"系统加密: 使用 FIPS 兼容的算法来加密哈希,和签名"安全设置在 Windows XP 和更高版本的 Windows XP 中单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
811833启用的效果,"系统加密: 使用 FIPS 兼容的算法来加密哈希,和签名"在 Windows XP 及更高版本的安全设置

属性

文章编号: 911722 - 最后修改: 2008年1月4日 - 修订: 3.2
这篇文章中的信息适用于:
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.1
关键字:?
kbmt kbtshoot kbprb KB911722 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 911722
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com