无效的回发或回调参数.为什么?

Gui*_*mez 8 asp.net postback linkbutton

所以我得到了例外

无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.

使用以下堆栈跟踪

[System.ArgumentException:Untrapped Exception:无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法,以便在System.Web.UI上的System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId,String参数)中注册回发或回调数据以进行验证. System.Web.UI.WebControls.LinkBut​​ton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)中System.Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(String eventArgument)的.Control.ValidateEvent(String uniqueID,String eventArgument) )在System.Web.UI.Page.ProcessRequestMain(布局
includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)的System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)的System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)中

在提交表单之后发生异常,然后在页面重新加载之前快速单击LinkBut​​ton以在同一页面上下载文件.

有人可以解释为什么在执行上述操作时发生此异常的细节?

提前致谢!

chp*_*ipr 17

这必须是.NET中最令人沮丧的错误消息之一,但是一旦你了解了正在发生的事情,它就有意义了..NET喜欢了解一切正在发生的事情.它跟踪它放置在页面上的所有元素.沿着同样的路线,当.NET收到来自它不知道的东西的输入时,它会被冒犯.在你的情况下,听起来,当你点击LinkBut​​ton时,.NET并不认为它应该在那里.根据我的经验,有两个可能的原因:

  1. 您正在进行创建新输入或克隆现有输入的客户端向导.

  2. 在处理表单提交时,.NET会对LinkBut​​ton执行某些操作,导致它不再可用.我遇到的一些例子是你的LinkBut​​ton是在后端动态创建的,或者你正在使用UpdatePanels,并且在表单提交过程中它们的内容会被更改.

基本上,我相信如果您单步执行表单提交代码并观察LinkBut​​ton,您将看到.NET忘记它,当单击LinkBut​​ton时可以理解地触发此"安全例外".

  • "我的链接按钮位于数据主义者内部"是关键声明.数据主义者是否会在回发中反弹?如果是这样,原始的LinkBut​​ton将被删除并创建新的LinkBut​​ton.它的功能和美学上完全相同,但.NET知道差异并解决这个错误. (4认同)