enableEventValidation是干什么的?

enableEventValidation是干什么的?回发或回调参数无效。在配置中使用<pagesenableEventValidation=”true”/>或在页面中使用<%@PageEnableEventValidation=”true”%>启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用ClientScriptMana…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

回发或回调参数无效。在配置中使用 <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/BrokenIce/p/5952658.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158742.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jmeter正则提取器的使用_java正则表达式用法

    jmeter正则提取器的使用_java正则表达式用法一、正则表达式提取器各名词解(1)ApplytoMainsampleandsub-samples(作用于主节点的取样器及对应子节点的取样器)Mainsampleonly(仅作用于主节点的取样器)Sub-samplesonly(仅作用于子节点的取样器)Jmeter-VariableNametouse(作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值)(2)要检查的响应字段1、主体:响应报文的主体,最常用2、Body(une.

    2022年9月10日
    3
  • 变性跨性别_女变男的漫画

    变性跨性别_女变男的漫画這是一個未完成,也永遠不會完成的列表更新日期:2013/09/08類型:裝=異性裝/偽娘,轉=性轉換/變性,間=雌雄間性/陰陽人/無性/フタナリ,跨=跨性別(含有現實跨性別意涵者)中文題名/,原文題

    2022年8月4日
    6
  • 静态类和非静态类的主要差别「建议收藏」

    静态类和非静态类的主要差别

    2022年1月29日
    45
  • idea 2021.11 激活【2021免费激活】

    (idea 2021.11 激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月28日
    54
  • APT防御_简述对安全的理解

    APT防御_简述对安全的理解在信息化的时代,很多业务都依赖于互联网,例如说网上银行、网络购物、网游等。大量的数据依赖于网络。无疑Web成为领导者。随着国家安全法的不断完善,企业及公司对用户隐私以及公司的重要信息逐渐加强重视。也使得暴露在网络上的Web面临更高的挑战。这种黑白交替的时代,黑白技术在对抗中也在不断的发展。也使得安全测试逐渐规范化。作为新人,浅谈一下Web安全观。浅谈从Web安全到APT防御。一、web系统存在的安全性复杂应用系统代码量大、开发人员出现疏忽;系统屡次升级、人员频繁变更,使得代码存在差别;新旧资源存在

    2022年9月19日
    1
  • 使用优启通(EasyU)重装系统教程(详细)「建议收藏」

    使用优启通(EasyU)重装系统教程(详细)「建议收藏」文章目录前言资源下载第一步:制作启动盘第二步:下载镜像并存入u盘第三步:正式开始重装第四步:激活系统完成系统激活注意事项前言为什么要制作一个启动盘才能重装系统?通俗点来说就是你自己生病了,自己一般不能自己帮自己看病,一般都是别人看病。电脑也是如此,需要一个第三方来“治疗”。为什么使用EasyU?而不使用老毛_,巴拉巴拉。。。。。因为其他的很多启动盘制作工具有广告,会在系统安装的时候安装第三方软件。资源下载启动盘制作工具(任选一个下载地址):下载地址1:123盘(不限速)下载地址

    2022年6月25日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号