【问题标题】:Validation of viewstate MAC failed error验证视图状态 MAC 失败错误
【发布时间】:2010-07-12 07:10:13
【问题描述】:

尝试通过传递参数运行reportviewer但收到错误:

viewstate MAC 验证失败错误 (ASP.NET MVC)

尝试了以下方法,但没有成功:

  1. 将机器密钥 (http://aspnetresources.com/tools/machineKey) 添加到 web.config 中的 system.web 标记

  2. 将 enableEventValidation="false" 设置为 web.config 中的 pages 标签。

有什么帮助吗?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    不久前我们遇到了同样的问题,经过大量搜索,以下代码解决了这个问题:

    protected override object LoadPageStateFromPersistenceMedium()
    {
        string viewState = Request.Form["__VSTATE"];
        LosFormatter formatter = new LosFormatter();
        return formatter.Deserialize(viewState);
    }
    
    protected override void SavePageStateToPersistenceMedium(object viewState)
    {
        LosFormatter formatter = new LosFormatter();
        System.IO.StringWriter writer = new System.IO.StringWriter();
        formatter.Serialize(writer, viewState);
        string viewStateString = writer.ToString();
        ClientScript.RegisterHiddenField("__VSTATE", viewStateString);
    }
    

    我们已经把它放在脚本标签的视图中,虽然不是很漂亮,但是很管用……

    更多详情见: Strange unhandled exception from asp.net application - Validation of viewstate MAC failedhttp://www.codeproject.com/KB/viewstate/ViewStateCompression.aspx

    【讨论】:

    • 是的.. 没那么漂亮.. 但你知道吗?!.. 谁在乎!.. 它解决了这个问题.. :) 你是一个传奇的伙伴!.. 再次感谢。
    • 我很高兴它有帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 2010-09-24
    • 2011-12-18
    相关资源
    最近更新 更多