错误信息“Viewstate is invalid for this page”(此页的视图状态无效)没有为解决此问题提供足够的信息

文章翻译 文章翻译
文章编号: 832183 - 查看本文应用于的产品
有关本文的 Microsoft .NET Framework 1.1 版本,请参阅 831150.


重要说明:除非将此修复程序安装在 Web 场环境或群集环境中的每一台计算机上,或已在该环境中的其他计算机上安装了修复程序 323744,否则“不要”在该环境中的计算机上安装此修复程序。

有关更多信息,请参阅本文“更多信息”部分的“视图状态 MAC 功能说明”。
展开全部 | 关闭全部

本文内容

概要

由于视图状态数据存储在 Web 页的隐藏域中,所以数据在客户端和服务器之间传输时很容易被篡改。为帮助提高视图状态功能的安全性,Microsoft ASP.NET 将验证视图状态数据,以确认该数据来自正确的页。

如果 ASP.NET 不能验证视图状态数据,则 ASP.NET 将向客户端浏览器返回一条消息“the viewstate is invalid for this page and might be corrupted”。但是,该消息不会说明视图状态数据无效的原因。

有关视图状态功能的更多信息,请参阅本文“更多信息”部分的“”。

解决方案

尽管本文提供了一个修复程序,但是该修复程序不会修复视图状态数据错误。此修复程序仅提供用以帮助解决视图状态数据错误的其他信息。

Microsoft 目前提供了受支持的修复程序,但该程序只用于解决本文中描述的问题。只有系统遇到本文提到的特定问题时才可应用此修复程序。此修复程序可能还会接受其他一些测试。因此,如果此问题没有对您造成严重影响,Microsoft 建议您等待包含此修复程序的下一个 Microsoft .NET Framework 1.0 Service Pack。

要立即解决此问题,请与 Microsoft 产品支持服务部门联系,以获取此修复程序。有关 Microsoft 产品支持服务部门的电话号码和支持费用信息的完整列表,请访问下面 Microsoft Web 站点:
http://support.microsoft.com/default.aspx?scid=fh;[LN];CNTACTMS
注意:特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新程序能够解决您的问题,可免收通常情况下收取的电话支持服务费用。对于特定的更新无法解决的其他支持问题和事项,将收取正常支持费用。

此修复程序的英语版具有下表中列出的文件属性(或更新的属性)。这些文件的日期和时间按世界时 (UTC) 列出。查看文件信息时,该时间将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”工具的“时区”选项卡。
   
   日期		时间	版本		大小		文件名
   --------------------------------------------------------------
   11-Dec-2003  07:13	1.0.3705.478    200,704		Aspnet_isapi.dll
   11-Dec-2003  07:06                   4,169		Aspnet_perf.h
   11-Dec-2003  07:14			513,302		Aspnet_perf.ini
   11-Dec-2003  07:14			510,714		Aspnet_perf2.ini
   11-Dec-2003  07:14	1.0.3705.478    24,576		Aspnet_regiis.exe
   11-Dec-2003  07:14	1.0.3705.478    28,672		Aspnet_wp.exe
   11-Dec-2003  06:27	1.0.3705.478    69,632		Corperfmonext.dll
   17-Jun-2003  21:43                   16,597		Installpersistsqlstate.sql
   17-Jun-2003  21:43                   17,331		Installsqlstate.sql
   09-Sep-2003  00:28                   17,807		Installsqlstatetemplate.sql
   11-Dec-2003  06:25	1.0.3705.478    303,104		Mscorjit.dll
   11-Dec-2003  23:48	1.0.3705.478	1,953,792	Mscorlib.dll
   11-Dec-2003  06:18	                10,284		Mscorlib.ldo
   11-Dec-2003  06:26	1.0.3705.478	2,273,280	Mscorsvr.dll
   11-Dec-2003  06:26	1.0.3705.478	2,269,184	Mscorwks.dll
   11-Dec-2003  07:10	1.0.3705.478    20,480		Perfcounter.dll
   23-Aug-2002  02:23                   15		Smartnav.htm
   30-Jul-2003  00:04                   8,728		Smartnav.js
   11-Dec-2003  23:48	1.0.3705.478	1,179,648	System.data.dll
   11-Dec-2003  23:48	1.0.3705.478	1,695,744	System.design.dll
   11-Dec-2003  23:48	1.0.3705.478	1,175,552	System.dll
   11-Dec-2003  23:48	1.0.3705.478    241,664		System.messaging.dll
   11-Dec-2003  23:48	1.0.3705.478    311,296		System.runtime.remoting.dll
   11-Dec-2003  23:49	1.0.3705.478    131,072		System.runtime.serialization.formatters.soap.dll
   11-Dec-2003  23:48	1.0.3705.478	1,200,128	System.web.dll
   11-Dec-2003  23:48	1.0.3705.478    507,904		System.web.services.dll
   11-Dec-2003  23:50	1.0.3705.478	1,994,752	System.windows.forms.dll
   11-Dec-2003  07:20                   16,632		System.windows.forms.ldo
   11-Dec-2003  07:15	1.0.3705.478    57,344		System.windows.forms.tlb
   11-Dec-2003  23:50	1.0.3705.478	1,302,528	System.xml.dll
   11-Dec-2003  23:47	1.0.3705.478    32,768		Tlbimp.exe
   17-Jun-2003  21:43                   1,419		Uninstallpersistsqlstate.sql
   09-Sep-2003  00:28                   2,119		Uninstallsqlstatetemplate.sql
   11-Dec-2003  23:47	1.0.3705.478    65,536		Wsdl.exe

修复程序详细信息

此修复程序将使视图状态错误信息包含更多信息。应用此修复程序后,视图状态错误信息的标题将变为“Unable to Validate Data”。尽管新的错误信息格式没有对问题进行具体描述,但它比以前的错误信息格式提供了更多信息。

注意:要获取关于视图状态数据的状态的更多信息,可以通过第三方的视图状态解码器,运行错误信息中出现的视图状态信息。

此修复程序将在 HttpException 对象上设置 InnerException 属性,以便可以使用 Application_Error 方法记录基本的异常。请确保用可递推的方式将所有 InnerException 属性错误记入日志。

此修复程序将以下关于客户端的特定信息添加到了视图状态错误的错误信息中:
  • IP 地址
  • 端口号
  • 用户代理
  • 视图状态的值
  • Http-Referer
  • 所请求的页的路径
如果 ASP.NET 在验证视图状态消息身份验证代码 (MAC) 时发生错误,此修复程序将在堆栈跟踪中添加一条消息,提示您验证 <MachineKey> 设置。该错误信息还说明,视图状态数据仅能发回到相同的页。

如果该错误发生在还原序列化的过程中,此修复程序会将 LosFormater 标记、_deserializationData 标记和错误发生的位置添加到错误信息中。

在大多数情况下,如果视图状态数据已被截断,视图状态功能的 FromBase64String 方法中将出现 FormatException 错误,您将收到以下错误信息:
Invalid length for a Base-64 char array
但是,如果视图状态数据已被截断并且仍然是 base64 编码的,将在后面的代码中出现该错误。

安装此修复程序之前的视图状态错误信息

Server Error in '/ViewState' Application.
--------------------------------------------------------------------------------
Viewstate is invalid for this page and might be corrupted.
Description:An unhandled exception occurred during the execution of the current web request.Please review the stack trace for more information about the error and where it originated in the code.

Exception Details:System.Web.HttpException:The viewstate is invalid for this page and might be corrupted.

Source Error:

An unhandled exception was generated during the execution of the current web request.Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HttpException (0x80004005):The viewstate is invalid for this page and might be corrupted.]
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +151
System.Web.UI.Page.LoadPageViewState() +18
System.Web.UI.Page.ProcessRequestMain() +423

安装此修复程序之后的视图状态错误信息

Server Error in '/ViewState' Application.
--------------------------------------------------------------------------------

Unable to validate data.
Description:An unhandled exception occurred during the execution of the current web request.Please review the stack trace for more information about the error and where it originated in the code.

Exception Details:System.Web.HttpException:Unable to validate data.

Source Error:

An unhandled exception was generated during the execution of the current web request.Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HttpException (0x80004005):Unable to validate data.]
System.Web.Configuration.MachineKey.GetDecodedData(Byte[] buf, String strModifier) +866
System.Web.UI.LosFormatter.Deserialize(String input) +44

[HttpException (0x80004005):Authentication of viewstate failed.1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm.AutoGenerate cannot be used in a cluster.2) Viewstate can only be posted back to the same page.3) The viewstate for this page might be corrupted.]
System.Web.UI.LosFormatter.Deserialize(String input) +102
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +101

[HttpException (0x80004005):The viewstate is invalid for this page and might be corrupted.
Client IP:127.0.0.1
Port:1095
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
ViewState:dDwzNDM3NTkwMzg7dDw7bDxpPDEPGk8MT47PjtsPHQ8QDA8cDxwPGw8RGF0YUt
Http-Referer:http://localhost/Connect2Access/WebForm1.aspx
Path:/connect2access/webform1.aspx.]
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +435
System.Web.UI.Page.LoadPageViewState() +16
System.Web.UI.Page.ProcessRequestMain() +439
注意:在此示例错误信息中的 ViewState 值已被截断以适应本文的上下文。

状态

Microsoft 已经确认这是在本文的“适用于”部分中列出的 Microsoft 产品中存在的问题。

更多信息

有关用于描述 Microsoft 产品更新术语的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684 有关用于描述 Microsoft 软件更新标准术语的介绍

视图状态功能说明

ASP 是无状态的。每当应用程序在服务器到客户端之间往返一次,数据都不会按原样保存下来。每次向服务器发送 Web 页时,会重新创建该页。此操作会导致丢失每次往返中与该页及该页上的控件关联的所有信息。例如,如果用户在文本框中键入信息,该信息会在从浏览器或客户端设备到服务器的往返行程中丢失。

ASP.NET 也是无状态的。但是,ASP.NET 有一个新的功能(视图状态),该功能可以用来保留来往于服务器的往返行程间的数据。视图状态会在往返行程间自动保存页的属性值和页上所有控件的值。视图状态数据将在页上以隐藏域的形式保留。

当页回送自身时,可以用视图状态功能在往返行程中存储您自己页面特有的值。例如,如果您的应用程序保持着用户特定的信息,您就可以使用视图状态功能来存储此用户特定的信息。用户特定的信息是网页中使用的信息,但是该信息不是任何控件的必要组成部分。

返回“概要”部分

视图状态 MAC 功能说明

视图状态消息身份验证代码 (MAC) 是一种身份验证标记(又称校验值),当对消息同时应用身份验证方案和密钥时就会创建该代码。MAC 通过使用相同的密钥进行计算和验证。因此,MAC 仅能由预定的接收方验证。可以使用多种加密技术和算法来创建 MAC,如安全散列算法 (SHA)、消息摘要 5 (MD5) 算法或数据加密标准 (DES) 算法。

视图状态 MAC 功能用以防止客户发送含有恶意视图状态数据的请求。默认情况下,视图状态 MAC 功能通过使用 Machine.config 文件中的 enableViewStateMac="true" 标志启用。

要确定所遇到的问题是否与 MAC 有关,最简单的方式是将该功能关闭。为此,请将 enable ViewStateMac 标志设置为 False。如果不再遇到视图状态错误,则该问题与 MAC 有关。

安装修复程序 323744 之前,Microsoft .NET Framework 1.0 中视图状态 MAC 的应用方式有所不同。本文介绍的修复程序(修复程序 832183)包括修复程序 323744。如果还不在该环境的所有其他计算机上安装修复程序 323744(单独安装或与修复程序 832183 一起安装),则未安装修复程序 323744 的计算机将出现视图状态数据错误。

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
323744 FIX:ASP.NET 中的错误信息“The View State is invalid for this page and might be corrupted”
328546 INFO:Post-Service Pack 2 .NET Framework ASP.NET Hotfix Package

属性

文章编号: 832183 - 最后修改: 2006年4月17日 - 修订: 2.3
这篇文章中的信息适用于:
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Studio .NET 2002 专业版
  • Microsoft Visual Studio .NET (2002), Enterprise Architect Edition SP1
  • Microsoft Visual Studio .NET 2002 企业级开发版
  • Microsoft Common Language Runtime (included with the .NET Framework) 1.0
  • Microsoft ASP.NET 1.0
关键字:?
kbqfe kbhotfixserver kbnetframe100presp3fix kbfix kbbug KB832183
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