我收到错误:“无效的回发或回调参数。使用配置或页面启用事件验证。出于安全考虑,此功能验证回发或回调事件的参数来自最初呈现的服务器控件如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。“使用配置或页面启用事件验证。我没有通过javascript修改控件中的数据。错误很少发生,我只知道它,因为我抛出异常时设置了一些自动电子邮件。找到异常原因的最佳方法是什么?是否有可能在某些情况下输入文本框中的某些文本导致此错误,我需要进行Html编码?我什么时候进行编码?
答案 0 :(得分:1)
如果问题很少发生,通常意味着某些用户已经快速发布了一个页面或连接很差,这不允许所有隐藏的ASP.net回调javascript机制在的地方。
答案 1 :(得分:1)
当用户在字段中提交具有潜在危险字符的表单('<','>'等)时,我经常遇到此问题。如果您的页面需要允许在表单中提交这些字符,则需要将页面级属性“ValidateRequest”设置为false。
实施例
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyClass.cs" Inherits="MyClass" ValidateRequest="false" %>
如果要阻止这些类型的提交(通常是可取的),您可能需要添加客户端脚本以防止无效字符输入到表单。如果用户无法输入无效值,则表单可以成功发布。如果您尝试仅在服务器端进行验证,则不会运行它,因为.NET ValidateRequest首先发生。
答案 2 :(得分:0)
之前我遇到过此错误,原来有人将form runat="server"
标记的“action”属性更改为其他网址(除非使用跨网页回发,否则无效)。
-edit:在这种情况下,它并不经常发生,所以它可能不会帮助你找到正确的解决方案