验证视图状态MAC失败的解决该方法
作者:本站编辑
发布时间:2012-04-24
来源:本站原创
点击数:
出错提示:
验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
源错误:
源文件: c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\f0178041\28ef7991\App_Web_lobgpcw2.4.cs 行: 0
解决此问题方法:
验证视图状态 mac 失败。如果此应用程序由网络场或群集承载 请确保 machinekey 配置指定了相同的 validationkey 和验证算法。不能在群集中使用 autogenerate。
总是莫名其妙的遇到这种问题,下面我总结了一些常用的解决方案,基本可以解决大家在asp.net编程中遇到的问题。但验证视图状态 mac 失败问题,微软是要负一部分责任的。本来好好的一个程序,运行一段时间突然就出现这种问题了,大家是不是有同感。
方法一:
验证视图状态 MAC 失败。
可以在当前页面的<page ...>里加两个属性:
enableEventValidation="false" viewStateEncryptionMode ="Never"
当然还可以在web.config里加入:
<pages enableEventValidation="false" viewStateEncryptionMode ="Never" />
方法二:
asp.net的runat='server' 会对ViewStat进行MAC的加密,使得提交数据时只能对同一页面进行。在接收页加上
@ page EnableViewStateMac="false"就可以接收另一页上post回来的数据,即在.aspx第一行加上下面代码即可:
enableviewstatemac="false"
方法三:
方法四:
web.config中<machineKey>中的validationKey。请仔细看错误提示。此节需要自己添加。
http://msdn.microsoft.com/zh-cn/library/w8h3skw9(VS.80).aspx
方法五:
如果用户无法修改程序源码,则可以在IIS的进程池中,点属性,将用户权限设为本地用户,如下图所示: