回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回 调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

错误:

回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

异 常详细信息: System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/> 或在页面中使用 <% @ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数 是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

发生条件:
1。画面有隐藏控件。
2。多次的GRID绑定。

发生原因:
.NET基于页面中的输出元素会在最终页面中生成一个__EVENTVALIDATION隐藏字段。做了一个简单的测试。页面中创建一个<asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" />,同时创建对应的Click事件处理程序。运行程序,可以正确响应事件。然后设置btnSubmit.Visable=false,手动在页面 上面添加<input type="submit" name="btnSubmit" value="Submit" />。运行程序,会出现一个包含EnableEventValidation内容的异常。设置<@Page EnableEventValidation="false">再运行程序,又可以正确响应事件。观察前后两次__EVENTVALIDATION 的内容,可以发现是不同的。关于出现的异常,可以认为在输出的时候没有包含btnSubmit,可是再提交到后台的时候却有相应的内容,前后不一致,所以 在开启事件校验的情况下.NET抛出了异常。

解决办法1:
Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//绑定数据;
}
}

解决办法2:
<pages enableEventValidation="false"/>

回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/>

可能出现的问题:
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
英文描述
id postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for valida

可行的解决方法有:

1、在页面的<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 中添加 EnableEventValidation="false" 就可以了。(首先考虑的)

2、通过web.config
<system.web>
<pages enableEventValidation="false"/>

3、是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。

4、如果页面含有 DropDownList 或 ListBox这样的控件,可能以下原因造成:

4.1 在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。
4.2 原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了.最好在web.config中添加如下语句:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/>因为 POSTBACK 如果不采用 UTF-8 编码, JAVASCRIPT 会认为有问题。
只改 requestEncoding="utf-8" 就可以了,responseEncoding="utf-8" 不用

5.Register For Event Validation
其原理就是让asp.net记录这个postback value.
RegisterForEventValidation必须在render时调用.

这个要具体分析。本来这个措施是asp.net2.0用来防止客户端“欺诈”服务器端的。例如本来输出到客户端的一个事件被触发时需要回发的命令是“__doPostback( 'ctl01$abc ', 'user_1 ')”的,如果采取采取手段把回发参数由   user_1   改为   user_5   了,服务器端会重新核对输出的是不是user_5,发现和这个页面上一个输出的脚本不一致,就会产生这个异常。

但是,很多程序员写的程序按照过去的习惯(或者按照更加高级灵活的设计例如一些Ajax组件)没有考虑这个问题或者是忽略这个欺诈的可能性,写的程序可能会修改参数或者修改目标控件。

因此这样具体问题具体分析。不太可能跟浏览器距离服务器的远近有关,应该还是编程逻辑问题。你应该对出异常的画面以及所使用的数据进行分析。有时候,经常也需要将这个参数设置为false,放弃安全管理。

转载于:https://www.cnblogs.com/xinzaixian/archive/2011/09/13/2174718.html

enableEventValidation是干什么的?相关推荐

  1. SPI通信协议:单片机spi通信接口什么意思,spi接口干什么用的?

    讲真,以前做开发的时候最怕就是调spi和iic. 因为公司没有逻辑分析仪,调起来全凭经验,一出问题找都找不到,只能仔细看代码盲调,看是不是哪个时序有问题. 说到这里,可能刚初学的小伙伴会问:单片机sp ...

  2. 服务器空闲搭建什么网站,空闲的云服务器可以干什么

    空闲的云服务器可以干什么 内容精选 换一换 默认情况下,对一个新的服务器第一次进行全量备份,后续进行永久增量备份.第一次全量备份,备份磁盘的已分配空间.例如一个100GB的磁盘,已经分配空间40GB数 ...

  3. python在教育领域可以干什么_学了Python一般可以用来干什么呢?

    很多朋友可能会问,为什么要学Python, 就算学会了Python 可以用来干什么呢? 一般都会首先想到爬虫. 爬虫不是说的那种虫子哦, 爬虫其实就是 类似于百度蜘蛛,谷歌蜘蛛一样的. 会自动的爬取网 ...

  4. Eclipse中dropins干什么用的文件夹啊?

    Eclipse中dropins干什么用的文件夹啊? 什么时候会用到啊?  bao110908 回复于: 2011-04-02 22:26:51 鉴于你的结帖率.就简单地说一下吧. Eclipse 3. ...

  5. 60秒,我们可以干什么?

    60秒,我们可以干什么?看广告.去洗手间.抽烟.打盹.发呆......是不是就是这些叠加的重复轮回耗尽了我们的激情?也在不知不觉中就这样浪费了我们的生命?可这些又是逃无可逃的,很多时间注定是被&quo ...

  6. 果园机器人能干什么_24* 果园机器人优秀教学实录

    共1课时 24* 果园机器人 小学语文       人教2001课标版 1教学目标 1.能正确.流利.有感情地朗读课文. 2.读懂课文内容,了解文中所介绍的果园机器人是怎样的. 3.培养学生热爱科学的 ...

  7. HTML5圆形线性渐变,css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码)...

    在前端开发过程中,有时会利用linear-gradient实现各种各样的效果,本章给大家介绍css中linear-gradient()函数是干什么的?实现线性渐变的圆形边框(代码).有一定的参考价值, ...

  8. [转贴]超过80%的80后大学生不知道自己将来要干什么

    超过80%的80后大学生不知道自己将来要干什么   2008-1-16 零点研究咨询集团董事长袁岳表示:今天,80后成为就业的主力.80后是让家长伺候出来的.现在单位的领导.专家,则大多数出生于多生子 ...

  9. 操作系统的进程状态变迁图_1.操作系统是干什么的?

    上一篇我们讲述了计算机的简史,在计算机的发展过程中慢慢出现了操作系统.但是操作系统是干什么的并没有讲述,所以这篇文章将会讲述操作系统在整个计算机领域所扮演的角色. 先看操作系统的定义是什么. 在维基百 ...

最新文章

  1. 顺序查找计时函数C语言,用C语言编二分查找
  2. 10 分钟使用 Spring Boot + Vue + Antd + US3 搭建自己的图床
  3. Protocol buffer的使用案例
  4. linux查看网速工具,ubuntu查看网速的工具
  5. 使用 GraalVM 将纯 JavaFX 项目打包成 EXE
  6. 3583. 整数分组
  7. 2021年高考成绩查询山东德洲,2021年德州高考状元是谁分数多少分,历年德州高考状元名单...
  8. 从框架源码中学习结构型设计模式
  9. H3C认证云计算高级工程师
  10. Linux运维人员共用root帐户权限审计
  11. 扩展吉日嘎拉的用户角色管理,让用户角色编码和名称在一个组织里面唯一
  12. SharePoint 2010开发实例精选——通过客户端对象模型删除页面上的Web部件
  13. spring-cloud-demo
  14. Web直播网站源码,你需要先知道这些小知识
  15. crackme005
  16. 【python学习笔记】Python的六种内置对象
  17. pwm调速c语言,PWM调速的C语言程序编写
  18. 动态规划求解最少硬币是多少?
  19. 管理员技术(二): 访问练习用虚拟机、 命令行基础技巧 、 挂载并访问光盘设备、ls列表及文档创建、复制删除移动...
  20. 使用 Datagrip 导入 Excel 数据表

热门文章

  1. Windows下RabbitMQ安装及入门
  2. 手机如何看python文件大小_如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?)...
  3. 【服务器】在 iPad 上运行 VSCode(宝塔+code server)
  4. 【软考】面向对象程序设计复习指南
  5. 【软考】程序设计语言复习指南
  6. java 军工_为什么军工行业不用java而是选择继续用c(对于业务系统Java是非常合适的而不带操作系统的板子甚至可以做到微秒级别的实时控制)...
  7. asp.net mvc redis同步mysql_Mysql和Redis数据同步策略 - 元思 - 博客园
  8. UVA 1329 Corporative Network(并查集:路径压缩)
  9. 同时买票是怎么实现的_搞笑GIF段子:这位挖掘机司机真的很牛,同时胆子很大...
  10. Java用swing实现的贪吃蛇