验证视图状态 MAC 失败

g497772921 2010-02-08 01:34:39
网页总是提未这个错误:
验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。

我已经在页面上设置了:enableEventValidation = " false " viewStateEncryptionMode = " Never "

但问题还没解决!!
...全文
223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yasire 2010-02-08
  • 打赏
  • 举报
回复
引用 6 楼 g497772921 的回复:
问题是加了form才出现的
<form id="form1" runat="server" action="../admin/search.aspx" method="post"> 

如何将两个form同时提交到一个页面就会出类似错误。
g497772921 2010-02-08
  • 打赏
  • 举报
回复
问题是加了form才出现的
<form id="form1" runat="server" action="../admin/search.aspx" method="post">
g497772921 2010-02-08
  • 打赏
  • 举报
回复
引用 2 楼 wuyq11 的回复:
检查页面代码,如form的ID和action等
ASP.Net的 runat='server' 会对ViewStat进行MAC的加密,使得提交数据时只能对同一页面进行。
在接收页加上 @ page EnableViewStateMac="false"
或者 enableEventValidation="false" viewStateEncryptionMode ="Never" 
也可以在web.config的节点里加入:
<system.web>
    <pages  enableEventValidation="false" viewStateEncryptionMode="Never" />
</system.web>
配置matchineKey
<system.web>
    <machineKey validation="3DES" validationKey="319B474B1D2B7A87C996B280450BB36506A95AEDF9B51211"
decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A87" decryption="3DES"/>
</system.web>
http://topic.csdn.net/u/20090224/19/5eb3401d-9dbc-45b9-8cd9-eca3dde1377f.html


试了,还是不行
g497772921 2010-02-08
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
msdn上的那个例子使用PageAdapter。实际上你可以直接在页面上override PageStatePersister
属性,写一条语句返回SessionPageStatePersister实例。

你也可以开发自己的PageStatePersister,例如将ViewState保存在数据库中或者App_Data目录下的临时文件中。

你说的我都不明白呢,
  • 打赏
  • 举报
回复
msdn上的那个例子使用PageAdapter。实际上你可以直接在页面上override PageStatePersister
属性,写一条语句返回SessionPageStatePersister实例。

你也可以开发自己的PageStatePersister,例如将ViewState保存在数据库中或者App_Data目录下的临时文件中。
wuyq11 2010-02-08
  • 打赏
  • 举报
回复
检查页面代码,如form的ID和action等
ASP.Net的 runat='server' 会对ViewStat进行MAC的加密,使得提交数据时只能对同一页面进行。
在接收页加上 @ page EnableViewStateMac="false"
或者 enableEventValidation="false" viewStateEncryptionMode ="Never"
也可以在web.config的节点里加入:
<system.web>
<pages enableEventValidation="false" viewStateEncryptionMode="Never" />
</system.web>
配置matchineKey
<system.web>
<machineKey validation="3DES" validationKey="319B474B1D2B7A87C996B280450BB36506A95AEDF9B51211"
decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A87" decryption="3DES"/>
</system.web>
http://topic.csdn.net/u/20090224/19/5eb3401d-9dbc-45b9-8cd9-eca3dde1377f.html
  • 打赏
  • 举报
回复
如果你关闭了检测EventValidation,那么可能不但数据混乱了,还不报错。

我遇到这个问题唯一原因是页面太复杂太大了,而又把ViewState全都放到了页面上。你可以考虑把ViewState放在Session中。参考:http://msdn.microsoft.com/zh-cn/library/system.web.ui.sessionpagestatepersister.aspx

也许是我写的asp.net还比较规范的原因,我似乎没有遇到其它原因造成的这个问题。

62,074

社区成员

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

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

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

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