一、回发或回调参数无效
 
   回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。 二、验证视图状态 MAC 失败    验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。有很多人说form嵌套,ajax等导致,但这是不可预期的,不是那次bug监控,都很难发现,太郁闷了,你都不知道什么时候会了来,想调试也没法调,有时点击频繁就报出这两个错误
按照网友提供的方法,各个地方设置为false还是会出来,我都快郁闷死了求如何彻底,完全的关闭这两个验证,我不要验证行吧。。

解决方案 »

  1.   

    有很多人说form嵌套,ajax等导致,但这是不可预期的,不是那次bug监控,都很难发现,太郁闷了,你都不知道什么时候会了来,想调试也没法调,有时点击频繁就报出这两个错误 
    按照网友提供的方法,各个地方设置为false还是会出来,我都快郁闷死了 求如何彻底,完全的关闭这两个验证,我不要验证行吧。。 
      

  2.   

    我以前出现过两次这样的问题,都是使用了AJAX控件,我只设了其中一个为false,目前尚未发现有什么附带的不良反应。下附我的设置:
    <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="x.aspx.cs" Inherits="x"  EnableEventValidation="false" MaintainScrollPositionOnPostback="true" %>
      

  3.   

    <pages enableEventValidation="true"/> 
    修改为--> 
    <pages enableEventValidation="false"/>这个好像就可以解决提示的问题吧
      

  4.   

    服务器控件 有他自己的VIEWSTATE 如果你用JS 去改变了这个服务器控件的东西 
    比如 gridview 用JS删了一行 
    回发的时候 会验证这个状态 改了就不能通过验证了
      

  5.   

    第一个异常,asp.net后台认为客户端有恶意攻击行为,它修改了postback的参数,使得客户端可以做服务器端根本没有输出相应的postback脚本而允许客户端做的功能。例如一个根本没有删除数据权限的人,尽管你的asp.net程序并没有输出“删除按钮”到客户端html上,仍然可以通过嵌入代码修改javascript脚本来执行删除按钮的功能。所以这个地方去修改@Page属性来停止这个安全保护,是技术上实在不行、万般无奈的时候才应该采用的。正常的做法应该去了解为什么会出这个异常。第二个异常,如果不是你的客户端代码妄图修改__ViewState隐藏域数据,就是(许多时候是在)你的页面过于复杂、过度下载巨大的__ViewState。这可以参考msdn:
    http://msdn.microsoft.com/zh-cn/library/system.web.ui.sessionpagestatepersister(VS.80).aspx可以将ViewState保存在Session中,而仅仅把ControlState输出到客户端,从而减小下载的__ViewState隐藏域的大小。但是这会在Session丢失时同时丢失页面状态,造成用户操作异常。我以前写过一个类,可以设置为你的Page的父类,它把ViewState和ControlState全都缓存在服务器端硬盘,并且服务器重启也没有影响。using System;
    using System.IO;
    using System.Threading;
    using System.Web.UI;public class VPage : Page
    {
        static private DirectoryInfo Dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\ViewState\"));    static VPage()
        {
            if (!Dir.Exists)
                Dir.Create();
        }    protected override object LoadPageStateFromPersistenceMedium()
        {
            string viewStateID = (string)((Pair)base.LoadPageStateFromPersistenceMedium()).Second;
            string stateStr = (string)Cache[viewStateID];
            if (stateStr == null)
            {
                string fn = Path.Combine(Dir.FullName, viewStateID);
                stateStr = File.ReadAllText(fn);
            }
            else
                Cache.Remove(viewStateID);
            return new ObjectStateFormatter().Deserialize(stateStr);
        }    protected override void SavePageStateToPersistenceMedium(object state)
        {
            string value = new ObjectStateFormatter().Serialize(state);
            string viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码   
            string fn = Path.Combine(Dir.FullName, viewStateID);
            ThreadPool.QueueUserWorkItem((obj) => File.WriteAllText(fn, value)); //或者只写 File.WriteAllText(fn, value)
            Cache.Insert(viewStateID, value);
            base.SavePageStateToPersistenceMedium(viewStateID);
        }    static private bool _flag = false;    protected override void OnUnload(EventArgs e)
        {
            base.OnUnload(e);
            if (_flag)
                return;        _flag = true;
            DateTime dt = DateTime.Now.AddHours(-1);
            try
            {
                foreach (FileInfo fl in Dir.GetFiles())
                    if (fl.LastAccessTime < dt)
                        fl.Delete();
            }
            catch
            {
            }
        }
    }asp.net Ajax来说,避免下载__ViewState非常重要,因为asp.net Ajax也是要维护状态的,就会在客户端于千里之外的服务器之间丢来丢去__ViewState。我上面这个父类,可以让__ViewState只剩下很短的一个字符串。
      

  6.   

    我,我最后提供的那个程序是5年以前的。我搜到2年前我使用的版本:http://topic.csdn.net/u/20081216/18/3d4426f8-6070-4544-a03b-5a9f7b5e2d27.html这个版本才跟最新的asp.net ajax完全没有一点冲突。