2011-05-02 69 views
7

所以我得到異常回發或回調參數無效。爲什麼?

無效的回發或回調參數。 在配置中使用 或 頁面中的EnableEventValidation =「true」%>啓用了事件驗證。爲了安全起見,此 功能驗證參數 回發或回調事件從 最初呈現它們的服務器控件發起 。如果數據 有效並且是預期的,請使用 ClientScriptManager.RegisterForEventValidation 方法來註冊 回發或回調數據以驗證 。

隨着以下堆棧跟蹤

[System.ArgumentException:未捕獲 異常:無效回發或 回調參數。事件驗證 已在 配置中啓用,或者在 頁面中啓用了EnableEventValidation =「true」%>。爲了安全起見,此 功能驗證參數 回發或回調事件從 最初呈現它們的服務器控件發起 。如果數據 是有效的和預期,可以使用 ClientScriptManager.RegisterForEventValidation 方法,以便爲 驗證註冊 回發或回調數據。]在 System.Web.UI.ClientScriptManager.ValidateEvent(字符串 UNIQUEID,字符串參數)在 System.Web.UI.Control.ValidateEvent(字符串 UNIQUEID,字符串eventArgument)在 System.Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(字符串 eventArgument)在 System.Web.UI.WebControls.LinkBut​​ton。 System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)at System.Web.UI.Page.Rais ePostBackEvent(IPostBackEventHandler sourceControl,字符串eventArgument)
處 System.Web.UI.Page.ProcessRequestMain(布爾 includeStagesBeforeAsyncPoint,布爾 includeStagesAfterAsyncPoint)

System.Web.UI.Page.RaisePostBackEvent(NameValueCollection中 POSTDATA)

提交表單後發生異常,然後在頁面重新加載之前快速單擊LinkBut​​ton以在同一頁面上下載文件。

有人可以解釋執行上述操作時發生此異常的詳細信息嗎?

在此先感謝!

+0

我在安裝.NET Framework 4.5時遇到了生產服務器上的相同異常。正因爲如此,我不得不還原.NET 4.0。順便說一下,.NET 4.5只是.NET 4.0的更新版本(或Service Pack),它們不能並肩生存。多麼愚蠢的東西... – 2012-12-21 07:33:41

回答

15

這必須是.NET中最令人沮喪的錯誤消息之一,但是一旦你感覺到發生了什麼,這是有道理的。 .NET喜歡瞭解正在發生的一切。它會跟蹤它在頁面上放置的所有元素。沿着同樣的路線,當.NET從不知道的事情接收到輸入時,它就會受到冒犯。就你而言,聽起來就像,當你點擊LinkBut​​ton時,.NET不認爲它應該在那裏。根據我的經驗,這是你的兩種可能的原因:

  1. 你正在做的是創造新的輸入或克隆現有的輸入客戶端的巫術。

  2. 在處理表單提交時,.NET會對LinkBut​​ton執行一些操作,導致它不再可用。我遇到過的一些例子是當你的LinkBut​​ton是在後端動態創建的,或者你正在使用UpdatePanels並且它們的內容在表單提交期間被改變。

基本上,我相信如果你逐步完成表單提交代碼,然後小心地看好的LinkBut​​ton,你會看到.NET忘掉它,這可以理解觸發該「安全例外」被點擊LinkBut​​ton的時候。

+0

我同意你的建議。我的情況與第二點有關。但是,我無法確定它是如何失敗的。應該按照與原始頁面加載(回發前)相同的方式呈現控件。我的linkbutton是在一個datalist裏面。我試圖在綁定我的datalist之前使用!IsPostback子句,但仍然失敗。 – 2011-05-02 18:49:23

+4

「我的linkbutton是在datalist」是關鍵陳述。 datalist是否在回發中反彈?如果是這樣,原始的LinkBut​​ton將被清除並創建新的LinkBut​​ton。它的功能和美觀完全相同,但是.NET知道它們的區別並且引發了這個錯誤。 – chprpipr 2011-05-02 20:12:36

1

如果他們在頁面有機會完全呈現之前點擊,那麼__EVENTVALIDATION字段將不會被完全寫入 - 因此您的錯誤。

現在,這已在3.5 SP1/3.0 SP2中修復,並在web.config中爲configurable;

<configuration> 
    <system.web> 
     <pages renderAllHiddenFieldsAtTopOfForm="true"></pages> 
    </system.web> 
</configuration> 

缺省值爲true - 那麼您運行的是哪個版本的.NET?您可以始終禁用按鈕客戶端,直到頁面加載完成。

0

使用該在頁面標籤EnableEventValidation =「假」

+3

使用EnableEventValidation =「false」是不好的,因爲它降低了安全性。 – 2015-10-14 15:23:54

+0

我同意,它減少了安全性,但我找到了解決方案,可以解決問題的任何建議.... @Dirk Strauss – 2015-10-16 04:46:08

0

page.asx我發現HTML表單可能導致的WebForms這個問題,如果你不從模板刪除所有

0

這個錯誤在我非常大的頁面上時斷時續地出現。

我發現如果一個按鈕被點擊之前頁面已經完成加載,它會給出這個錯誤。

在點擊按鈕之前等待頁面完全加載,我沒有收到錯誤。

相關問題