无效的回发或者回调参数

时间:2020-03-06 14:26:52  来源:igfitidea点击:

我有一个ASP.net应用程序,在开发环境中运行良好,但是在生产环境中,单击执行回发的链接时会引发以下异常。有任何想法吗?

Invalid postback or callback argument.
  Event validation is enabled using
  
  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
  validation.

编辑:这似乎仅在使用IE6而不是IE7时才发生,有什么想法吗?

解决方案

回发发生时似乎页面上的数据/控件已更改。如果在page指令中关闭事件验证会发生什么。

<%@ Page ... EnableEventValidation = "false" />

如果我们发布的内容似乎是恶意内容,则可能会发生这种情况;例如其中包含html但未在回发之前进行编码的文本框。如果允许提交html或者脚本,则需要对其进行编码,以使字符(例如<)以&lt;的形式传递。

只有在我的页面中嵌套了<form>标签时,我才会获得此标签。 IE6将查看嵌套的表单标签,并尝试以这些表单以及主要ASP.NET表单发布值,从而导致错误。其他浏览器不会发布嵌套表单(因为它是无效的HTML),也不会收到错误。

我们当然可以通过执行EnableEventValidation =" false"来解决此问题,但这可能意味着我们发布的值和视图状态存在问题。最好先清除嵌套的<form>标签。

还有其他可能出现的地方,例如表单字段中的HTML式值,但是我认为这些错误信息更为具体。在引发此问题的通用回发中,我只需要检查呈现的页面是否有额外的&lt;form>标签。