【问题标题】:ASP.NET Postback errorASP.NET 回发错误
【发布时间】:2009-03-04 20:55:56
【问题描述】:

我正在使用 C# 打开一个弹出窗口并允许用户从中选择一些值并将该值发送回服务器。但是,当我关闭弹出窗口时,出现以下错误:


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


有谁知道这是什么原因造成的?

【问题讨论】:

  • 需要更好地描述页面实际在做什么,可能需要一些代码

标签: c# asp.net


【解决方案1】:

我在将包含 HTML 标记或其他受限字符的值发回表单时看到了此错误。默认情况下,.NET 出于安全原因阻止此操作。

在关闭表单时检查您要发回页面的值,以查看您是否在其中一个输入值中发送任何标记。

如果您绝对必须发送此类数据,请禁用 ASPX 页面上的 EnableEventValidation 属性,并确保应用验证以防止注入。

【讨论】:

    【解决方案2】:

    出现此错误的最常见原因(对我而言)是当您自己命令式地(在代码隐藏中)而不是在 .aspx 文件中以声明方式创建控件时。特别是在初始页面呈现期间您创建一组控件,而在回发期间您的页面创建逻辑创建(可能略有)不同的一组控件。每次呈现页面时,无论是否在回发时,都必须创建页面上的所有控件并将其添加到树中的相同位置。否则会导致此错误。

    这个错误可能还有其他原因,但这是我见过的唯一情况。

    【讨论】:

      【解决方案3】:

      关闭事件验证。只要您自己检查表单值并确保您不接受无效值,这完全没有必要。

      【讨论】:

        【解决方案4】:

        此事件验证机制 降低未经授权的风险 回发请求和回调。和 在这个模型中,一个控件注册了它的 渲染期间的事件,然后 验证期间的事件 回发或回调处理。全部 ASP.NET 中的事件驱动控件使用 默认情况下此功能。

        您可以在 PAGE 或 web.config 中关闭 EnableEventValidation,但这被认为存在安全风险。

        你可以试试:

        除非必要,请确保绑定在 - !Page.IsPostBack 中完成

        【讨论】:

          【解决方案5】:

          如果您的弹出窗口(或其他任何内容)将任何内容注入到执行回发的表单中,那么这可能是错误的根源。

          当我使用手动连接的 jquery ajax 调用来更新级联选择列表(比 aspnet ajax 快得多)时,我遇到了这个错误,放入辅助选择的新值(它是 runat=server)导致事件验证失败.您可以通过脚本管理器将其全部注册(我觉得这有点痛苦),或者禁用事件验证,但这确实意味着更加努力并自己验证它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-04
            • 1970-01-01
            • 2023-04-11
            • 1970-01-01
            • 2018-03-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多