我知道这是一个备受争议的话题,通常在您将此视为解决方案时,您可能需要重新考虑您的UI逻辑.
我知道我可以使用ClientScriptManager.RegisterForEventValidation传递验证.但是,我真的很想知道.是否可以删除单个控件的事件验证?有办法解决这个问题吗?
我在渲染后从客户端修改DropDownList.
伙计们,我的asp.net 3.5应用程序中有一个usercontrol,我在按钮点击事件上传递一些纯文本.按钮位于usercontrol中.但是当我发射事件时,我收到以下错误;
无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.
当我将EnableEventValidation ="false"设置为web表单页面时就像打击一样.它会引发事件;
<%@ Page EnableEventValidation="false" %>
Run Code Online (Sandbox Code Playgroud)
但我认为设置那个假不应该是个好主意.那么,这里的替代方案是什么?有错误说'使用ClientScriptManager.RegisterForEventValidation方法来注册回发或回调数据以进行验证."但我会在哪里注册那件事?谢谢 !
另外,我在usercontrol中使用了一些AjaxControlToolkit控件和一些jquery的东西.
我们在其中一个Web服务器中安装了.net 4.5 Framework.我们的应用程序针对.net 4.0,并在负载均衡器后面运行多个服务器.
安装后,我们收到一些POST请求的以下错误消息
error_name = System.ArgumentException error_message =无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.error_details =来源:System.Web
当从安装了.net 4.5的服务器请求时,请求正文中的__EVENTVALIDATION值不同.MSDN提到.net 4.5中的加密更改使用了opt in配置,因此默认情况下它应该向后兼容.
在没有禁用事件验证的情况下是否有配置更改,我需要为_EVENTVALIDATION执行与安装.net 4.5的计算机上的行为相同,因为它只使用.net 4.0?
我创建了一个项目交换器控件,包含两个列表框和一些按钮,允许我在两个列表之间交换项目.交换是使用javascript完成的.我还在列表中上下移动项目.基本上,当我将项目移动到右侧的列表框时,我将元素(GUID)的数据键存储在隐藏字段中.在回发时,我只是从字段中读取GUID.一切都很好,但在回发后,我得到以下异常:
无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.
我准备了一个测试应用程序.您所要做的就是下载存档并运行项目.在网页上选择3项,按全部添加,然后将第三个元素向上移动一级,然后点击"按钮".错误将显示出来.关闭事件验证绝不是可以接受的.任何人都可以帮助我,我已经花了两天没有找到解决方案.
我有一个带有一些动态添加按钮的页面.如果在页面完全加载之前单击按钮,则会抛出经典异常:
Run Code Online (Sandbox Code Playgroud)Invalid postback or callback argument. Event validation is enabled using in configuration or in a page. For出于安全目的,此功能将验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.
我猜测尚未在表单上加载Viewstate字段,其他位正在提交.在保持事件验证的同时,防止此错误的最佳方法是什么?
我们已经厌倦了在我们的网络应用程序中获得有关"无效回发或回调参数"的例外情况.什么情况会导致此错误?
在与用户交谈之后,我们确定一个可能的原因是当他们点击导致回发的内容时,然后在初始回发完成之前单击其他内容.
禁用事件验证有什么危害?为了它的价值,我们安装了SecureIIS以提高安全性.
更新:在某些地方,我们使用Javascript来修改某些控件值,例如下拉列表选项(我们这样做是为了提供更好的用户体验 - 更少的回发).这可能导致错误.我们对所有用户输入都进行了严格的编辑,因此我们将继续禁用EventValidation.谢谢!
我正在使用
__doPostBack(clientIdOfSomeButton, someData);
Run Code Online (Sandbox Code Playgroud)
在JavaScript中创建PostBack.问题是someData事先不知道,事件验证开始,因为我不可能ClientScript.RegisterForEventValidation 每一个可能的价值someData.
到目前为止,我只能看到解决这个问题的两种可能性:
__doPostBack.那很难看.我错过了第三种选择吗?理想情况下,我喜欢类似的东西ClientScript.RegisterForEventValidationIgnoreArguments(myButton),但这样的东西不存在......
我有一个稳定的错误,每次击中F5时都会重现:

有两个网格(主 - 细节),当主网格上发生聚焦行更改事件时,我的客户端代码引发的回调实际上发生了错误.像这样的东西:
this.mainGrid.ClientSideEvents.FocusedRowChanged = string.Format(@"
function(s, e)
{{
if (typeof({0}) != 'undefined')
{0}.PerformCallback(s.GetFocusedRowIndex());
}}",
this.detailsGrid.ClientInstanceName);
Run Code Online (Sandbox Code Playgroud)
这个bug只能在mozilla firefox中重现!(是的,IE没有问题,这有点奇怪=))
非常重要的是:只有当事件验证开启时,bug才会重现,即:
... EnableEventValidation="false" %> // no error in this case
Run Code Online (Sandbox Code Playgroud)
我建议原因是在必要的字段加载之前回调被触发(因为我得到它,事件验证使用一些隐藏的字段),所以我检查了使用setTimeout:
this.mainGrid.ClientSideEvents.FocusedRowChanged = string.Format(@"
function(s, e)
{{
window.setTimeout(function () {{
if (typeof({0}) != 'undefined') {0}.PerformCallback(s.GetFocusedRowIndex());
}}, 2000);
}}",
this.detailsGrid.ClientInstanceName);
Run Code Online (Sandbox Code Playgroud)
但是tat并没有帮助.2秒后,回叫开始,我收到错误.它仅在刷新时发生 - 第一次加载页面时不会引发错误.禁用网格的行缓存也没有帮助.需要帮助!=))
编辑:这是StackTrace
at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
at System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded()
at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument)
at System.Web.UI.Control.ValidateEvent(String …Run Code Online (Sandbox Code Playgroud) asp.net ×8
.net ×2
.net-4.5 ×1
cryptography ×1
firefox ×1
javascript ×1
listbox ×1
security ×1
viewstate ×1
web-farm ×1