enableEventValidation

回發或回調參數無效。在配置中使用 <pages enableEventValidation="true"/> 或在頁面中使用 <%@ Page EnableEventValidation="true" %> 啓用了事件驗證。出於安全目的,此功能驗證回發或回 調事件的參數是否來源於最初呈現這些事件的服務器控件。若是數據有效而且是預期的,則使用 ClientScriptManager.RegisterForEventValidation 方法來註冊回發或回調數據以進行驗證。 說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以瞭解有關該錯誤以及代碼中致使錯誤的出處的詳細信息。程序員

錯誤:web

回發或回調參數無效。在配置中使用 <pages enableEventValidation="true"/> 或在頁面中使用 <%@ Page EnableEventValidation="true" %> 啓用了事件驗證。出於安全目的,此功能驗證回發或回調事件的參數是否來源於最初呈現這些事件的服務器控件。若是數據有效而且是預期的,則使用 ClientScriptManager.RegisterForEventValidation 方法來註冊回發或回調數據以進行驗證。
異 常詳細信息: System.ArgumentException: 回發或回調參數無效。在配置中使用 < pages enableEventValidation="true"/> 或在頁面中使用 <% @ Page EnableEventValidation="true" %> 啓用了事件驗證。出於安全目的,此功能驗證回發或回調事件的參數 是否來源於最初呈現這些事件的服務器控件。若是數據有效而且是預期的,則使用 ClientScriptManager.RegisterForEventValidation 方法來註冊回發或回調數據以進行驗證。
發生條件: 1。畫面有隱藏控件。 2。屢次的GRID綁定。
發生緣由: .NET基於頁面中的輸出元素會在最終頁面中生成一個__EVENTVALIDATION隱藏字段。作了一個簡單的測試。頁面中建立一個<asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" />,同時建立對應的Click事件處理程序。運行程序,能夠正確響應事件。而後設置btnSubmit.Visable=false,手動在頁面 上面添加<input type="submit" name="btnSubmit" value="Submit" />。運行程序,會出現一個包含EnableEventValidation內容的異常。設置<@Page EnableEventValidation="false">再運行程序,又能夠正確響應事件。觀察先後兩次__EVENTVALIDATION 的內容,能夠發現是不一樣的。關於出現的異常,能夠認爲在輸出的時候沒有包含btnSubmit,但是再提交到後臺的時候卻有相應的內容,先後不一致,因此 在開啓事件校驗的狀況下.NET拋出了異常。
解決辦法1: Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //綁定數據; } }
解決辦法2: <pages enableEventValidation="false"/>ajax

 

 

回發或回調參數無效。在配置中使用 <pages enableEventValidation="true"/>
 

可能出現的問題: 回發或回調參數無效。在配置中使用 <pages enableEventValidation="true"/> 或在頁面中使用 <%@ Page EnableEventValidation="true" %> 啓用了事件驗證。出於安全目的,此功能驗證回發或回調事件的參數是否來源於最初呈現這些事件的服務器控件。若是數據有效而且是預期的,則使用 ClientScriptManager.RegisterForEventValidation 方法來註冊回發或回調數據以進行驗證。 英文描述 id postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> 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 valida
可行的解決方法有:
一、在頁面的<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 中添加 EnableEventValidation="false" 就能夠了。(首先考慮的)
二、經過web.config <system.web> <pages enableEventValidation="false"/>
三、是Form嵌套,一個頁面只能有一個Form,仔細檢查代碼就能夠解決。
四、若是頁面含有 DropDownList 或 ListBox這樣的控件,可能如下緣由形成:
4.1 在下拉菜單中使用ajax,常見於省市聯動菜單,多是因爲在aspx頁面賦給了下拉菜單初始Item值,在事件回發時提示該錯誤,將下拉菜單初始Item值刪除,在綁定事件中添加Item項。 4.2 緣由是 DropDownList 控件的ListItem 的Value 屬性 包含漢字.只要將Value 改成英文或數字的就好了.最好在web.config中添加以下語句: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/>由於 POSTBACK 若是不採用 UTF-8 編碼, JAVASCRIPT 會認爲有問題。 只改 requestEncoding="utf-8" 就能夠了,responseEncoding="utf-8" 不用
5.Register For Event Validation 其原理就是讓asp.net記錄這個postback value. RegisterForEventValidation必須在render時調用.編程

 

 

這個要具體分析。原本這個措施是asp.net2.0用來防止客戶端「欺詐」服務器端的。例如原本輸出到客戶端的一個事件被觸發時須要回發的命令是「__doPostback( 'ctl01$abc ', 'user_1 ')」的,若是採起採起手段把回發參數由   user_1   改成   user_5   了,服務器端會從新覈對輸出的是否是user_5,發現和這個頁面上一個輸出的腳本不一致,就會產生這個異常。
可是,不少程序員寫的程序按照過去的習慣(或者按照更加高級靈活的設計例如一些Ajax組件)沒有考慮這個問題或者是忽略這個欺詐的可能性,寫的程序可能會修改參數或者修改目標控件。
所以這樣具體問題具體分析。不太可能跟瀏覽器距離服務器的遠近有關,應該仍是編程邏輯問題。你應該對出異常的畫面以及所使用的數據進行分析。有時候,常常也須要將這個參數設置爲false,放棄安全管理。瀏覽器

相關文章
相關標籤/搜索