异常详细信息: System.Web.HttpException: 无法验证数据。问题特别奇怪!

stormwen 2006-10-18 11:35:47
这个出现错误的页面是填加文章的 页面,使用的是freetextbox在线编辑器

问题出现的情况介绍:

登陆后,是可以发表文章的,也就是说一般情况下是没有这个错误,程序都是正确的,没有任何问题

但是当一会不使用此页面,(时间不定,没有找到规律,有的时候还在操作中,)

再填加文章提交就出现下面的错误了

然后关掉ie,再次登陆,再发表文章,又没有问题了,再过一会,又会出现这样的错误提示

我都快被这个问题折磨死了

问题到底出在什么地方的呀???











“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

无法验证数据。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 无法验证数据。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[HttpException (0x80004005): 无法验证数据。]
System.Web.Configuration.MachineKey.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +196
System.Web.UI.LosFormatter.Deserialize(String input) +60

[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) +118
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +102

[HttpException (0x80004005): Invalid_Viewstate
Client IP: 221.220.149.8
Port: 35829
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
ViewState: dDwxNDU0MzMyNDY7dDw7bDxpPDE+Oz47bDx0PDtsPGk8Mz47aTw1PjtpPDc+O2k8MTQ+O2k8MTY+O2k8MjE+O2k8MzQ+Oz47bDx0PHQ8cDxwPGw8RGF0YVRleHRGaWVsZDtEYXRhVmFsdWVGaWVsZDs+O2w8dG5hbWU7dHNpZDs+Pjs+O3Q8aTw3PjtAPC0t6YCJ5oupLS075paw6Ze76LWE6K6vO+agj+ebruaSreaKpTvkuqTnrqHlnKjnur875aSn5LyX5Lqk6YCaO+i9pueVjOiwjeaKpTvnpL7ljLrmnI3liqE7PjtAPDA7MjszOzU7Njs3Ozg7Pj47bDxpPDE+Oz4+Ozs+O3Q8dDxwPHA8bDxEYXRhVGV4dEZpZWxkO0RhdGFWYWx1ZUZpZWxkOz47bDx0bmFtZTt0c2lkOz4+Oz47dDxpPDEwPjtAPOS7iuaXpeW/q+iurzvlqpLkvZPogZTmkq0754Sm54K56K+d6aKYO+iIquepuuWKqOaAgTvpk4Hot6/ov5DovpM76ZW/6YCU5a6i6L+QO+S6rOWfjuW3tOWjqzvnmoTlo6vmg4XmgIA757K+5b2p6K665Z2bO+Wlpei/kOS6pOmAmjs+O0A8MjY7Mjc7Mjg7Mjk7MzA7MTA3OzEwODsxMDk7MTEwOzExMTs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w85aSn6LSn5Y+N5omj6Lev6L655LiK5ryU4oCc5aSp5aWz5pWj6Iqx4oCdOz4+Oz47Oz47dDxwPHA8bDxUZXh0Oz47bDwxNDs+Pjs+Ozs+O3Q8cDxwPGw8VGV4dDs+O2w8Mjg7Pj47Pjs7Pjt0PHQ8cDxwPGw8RGF0YVRleHRGaWVsZDtEYXRhVmFsdWVGaWVsZDs+O2w8YW5hbWU7YW5hbWU7Pj47Pjt0PGk8NT47QDxhZG1pbjvmtYvor5U757qi57u/54GvO+S6pOeuoeWxgDvmnaXoh6rnvZHnu5w7PjtAPGFkbWluO+a1i+ivlTvnuqLnu7/nga875Lqk566h5bGAO+adpeiHque9kee7nDs+Pjs+Ozs+O3Q8QDA8cDxsPERvd25sZXZlbE1vZGU7PjtsPEZyZWVUZXh0Qm94Q29udHJvbHMuRG93bmxldmVsTW9kZSwgRnJlZVRleHRCb3gsIFZlcnNpb249MS42LjMuMjYwNzMsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbDxUZXh0QXJlYT47Pj47Ozs+Ozs+Oz4+Oz4+O2w8Q2hlY2tCb3gxO0ZyZWVUZXh0Qm94Mjs+PtVedNMPQAsq1me9qBgT6ptzpEvP
Http-Referer: http://www.hld122.com/web/adminihld/addNews.aspx
Path: /web/adminihld/addNews.aspx.]
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +448
System.Web.UI.Page.LoadPageViewState() +18
System.Web.UI.Page.ProcessRequestMain() +447




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300
...全文
2106 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
killserver 2006-10-24
  • 打赏
  • 举报
回复
AutoEventWireup="true"

OK?
stormwen 2006-10-21
  • 打赏
  • 举报
回复
up...
stormwen 2006-10-20
  • 打赏
  • 举报
回复
如果我这个页面做成静态页面应该不会出现这样的问题了吧?
daishengs 2006-10-19
  • 打赏
  • 举报
回复
我的新闻发布页面的前台HTML文件头是这样子的。
<%@ Page validateRequest="false" language="c#" Codebehind="Add.aspx.cs" AutoEventWireup="false" Inherits="ZJBF_Exam.Web.Manage.Module.Add" %>
hld122 2006-10-19
  • 打赏
  • 举报
回复
关注一下
stormwen 2006-10-19
  • 打赏
  • 举报
回复
谢谢孟子老师
明天一上班我就试试
那么禁用viewstate 会带来什么不利的影响吗?
孟子E章 2006-10-19
  • 打赏
  • 举报
回复
其实错误里已经说明了

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.
如果是服务器群集 ,machineKey不能设置为AutoGenerate 的

2) Viewstate can only be posted back to the same page.
Viewstate 只能提交到本页,不能提交到其他的页面


3) The viewstate for this page might be corrupted.

viewstate 可能是损坏了
建议您禁用viewstate ,也就是设置EnableViewstate =false


stormwen 2006-10-19
  • 打赏
  • 举报
回复
哎,公司现在用的都是2003,没有办法,谢谢您的回答

至少我明白了问题是出在页面提交方面的
  • 打赏
  • 举报
回复
使用SessionPageStatePersister 起码还能让你的页面提交/下载速度成倍提高。
  • 打赏
  • 举报
回复
如果你使用asp.net2.0,那么可能可以轻易彻底避开这个问题,就是重写页面PageStatePersister并且返回SessionPageStatePersister 实例而不是默认的那个HiddenFieldPageStatePersister 实例,此时ViewState仅仅在Session中而不输出到客户端。
  • 打赏
  • 举报
回复
我已经两年没有碰过asp.net1.1的东西了,没有环境给你调试这个问题。不过这个问题我记得两年多前我使用FreeTextBox的时候也是“一定”出现的,忘记是什么原因了。

很自然这是ViewState传到服务器上错误了,因为这个BUG的文档就是这么记载的。但是知道了这个不能解决任何问题,关键是你要调试并发现为什么客户端的 __ViewState 隐藏字段的值无法全部发送到服务器端(!!!)

ViewState是保存在客户端的,在提交(__doPostBack函数执行)的时候被提交,根本不存在“服务器端状态消失”的问题,因此此时就是在提交状态给服务器端。

你如果根据“出了错误后,重新登陆就又可以了”就判断跟Session有关会走入误区的,因为这类在page的核心处理过程中的重大的异常本来就使得应用程序被重启(重要的异常发生时并不是在应用程序环境里,而是在应用程序之外)。我可以肯定这个不是因为应用程序异常(例如Session状态错误)而导致页面提交出错,而是因为页面提交发生严重错误而导致应用程序异常(而丢失Session)。不必往这个方面去找原因。
stormwen 2006-10-19
  • 打赏
  • 举报
回复
.aspx 的没有什么东西,只有几个服务器控件.

我想程序应该没有问题,因为大多数时间都可以正常使用

出了错误后,重新登陆就又可以了
stormwen 2006-10-19
  • 打赏
  • 举报
回复
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace Web.admin
{
/// <summary>
/// AddAuthor 的摘要说明。
/// </summary>
public class AddAuthor : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox TBemail;
protected System.Web.UI.WebControls.TextBox TBaddr;
protected System.Web.UI.WebControls.TextBox TBtel;
protected System.Web.UI.WebControls.TextBox TBorg;
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator3;
protected System.Web.UI.WebControls.TextBox TBname;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}


#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{

}

private void Button1_Click(object sender, System.EventArgs e)
{
string Txtname=this.TBname.Text.ToString().Trim();
string Txtorg=this.TBorg.Text.ToString().Trim();
string Txttel=this.TBtel.Text.ToString().Trim();
string Txtaddr=this.TBaddr.Text.ToString().Trim();
string Txtemail=this.TBemail.Text.ToString().Trim();

DB db=new DB();
SqlConnection conn=db.sqlConnection();
SqlCommand scd=new SqlCommand("insert into author values ('"+Txtname+"','"+Txtorg+"','"+Txttel+"','"+Txtaddr+"','"+Txtemail+"')",conn);
scd.ExecuteNonQuery();
conn.Close();
Response.Write( "<script>history.go(-2);</script>" );

}
}
}
真相重于对错 2006-10-19
  • 打赏
  • 举报
回复
把addnews.aspx , addnew.aspx.cs贴上来看看
??
stormwen 2006-10-19
  • 打赏
  • 举报
回复
hdt(倦怠) ( )
1、客户端修改没viewstate??
2、有可能使用用户输入了错误的数据造成,
==============================================================

您好,谢谢您的回答,第一个我没有看明白

第二个,不是用户输入错误,因为只要重新登陆后,再输入原来的东西就可以提交了


真相重于对错 2006-10-19
  • 打赏
  • 举报
回复
1、客户端修改没viewstate??
2、有可能使用用户输入了错误的数据造成,
hld122 2006-10-19
  • 打赏
  • 举报
回复
顶起来....

怎么没有回答了.

等待中..
Qlike 2006-10-18
  • 打赏
  • 举报
回复
我用万网的虚拟主机也遇到了这样的问题,真是急死人了。

我在网上查过了,听说是因为用了服务器群集的原因了。
shoutor 2006-10-18
  • 打赏
  • 举报
回复
我也经常遇到,某些数据总存在这样的问题,大多数不会

学习
  • 打赏
  • 举报
回复
“如果在服务器上状态消亡后再提交页面的话”,问题是此时并没有“在服务器上状态消亡”!

这个页面提交的内容大于web.config或者machine.config中规定的页面上传(Post)数据的最大值(实际上web传统上都是规定4M最大尺寸),导致post上来的那些数据不完整。应该修改maxRequestLength 参数。
加载更多回复(8)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧