全站首页设为首页收藏本站

外链之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

社区广播台

    查看: 2751|回复: 6
    打印 上一主题 下一主题

    验证视图状态 mac 失败

    [复制链接]
    跳转到指定楼层
    楼主
    发表于 2013-12-4 22:14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    验证视图状态 mac 失败。如果此应用程序由网络场或群集承载,请确保 <machinekey> 配置指定了相同的 validationkey 和验证算法。不能在群集中使用 autogenerate。
    说明: 执行当前 web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
    异常详细信息: system.web.httpexception: 验证视图状态 mac 失败。如果此应用程序由网络场或群集承载,请确保<machinekey> 配置指定了相同的 validationkey 和验证算法。不能在群集中使用 autogenerate。
    分析:
    分析后找到了问题的根源。首先,文章中提到,如果用gridview,并且指定了datakeynames属性,则出于安全的理由(因为datakeynames指定的字段代表数据的主键,且该主键值需要保存在视图状态中发送到客户端,用户如果篡改主键值,会导致安全问题),gridview会要求加密视图状态。为此会自动在页面表单</forms>之前添加一个<inputtype="hidden" name="__viewstateencrypted" id="__viewstateencrypted"value="" /> 。
    然而,atlas的updatepanel要求放置在<form></form>内部,也就是</form>之前。这就意味着添加的隐藏input控件没有被放置在updatepanel内,而是放置在updatepanel和</form>之间。
    当updatepanel更新时,updatepanel内部的控件被提交到服务器进行处理(patrialrendering),而整个页面并没有被提交。也就是说隐藏的input控件没有随着一起提交。因此服务器并不知道提交的viewstate被加密了,从而导致mac验证错误。
    解决方法有二,仅供参考:
    1.可以在当前页面的<page ...>里加两个属性:
    2.当然还可以在web.config里加入:(<system.web>之间)
    想学习黑1客技术 一直以来没有找到好的方法,最近发现一个地方还不错 推荐一个黑1客网站 www.hack6.com qq:283422135 可以联系15625253078
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享
    回复

    使用道具 举报

    沙发
    发表于 2013-12-25 19:42:28 | 只看该作者
    难得一见的好帖
    回复 支持 反对

    使用道具 举报

    板凳
    发表于 2013-12-25 19:54:35 | 只看该作者
    很好哦
    回复 支持 反对

    使用道具 举报

    地板
     楼主| 发表于 2013-12-25 20:27:03 | 只看该作者
    很不错
    回复 支持 反对

    使用道具 举报

    5#
    发表于 2014-2-1 14:21:43 | 只看该作者
    昌平的网上家园 哈哈 平台不错啊
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表