2013-02-03 157 views
3

這是錯誤無效的回發或回調參數

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

,我也越來越這些只是經常

狀態信息是這個頁面無效,可能已損壞。

我讀過其他大約20「無效的回發或回調參數」問題&的答案,我不認爲我屬於任何普通類:創建

  • 動態客戶端或改變控件ASP.NET不知道
  • 用戶提交的代碼或代碼位,例如「<」和「>」字符每Page_Load事件
  • 結合數據,而無需使用如果(!的IsPostBack)審慎
  • 故障AJAX CascadingDropDown擴展
  • 俄羅斯試圖破解您的網站(!)
  • 上的用戶間歇性問題進行撥號(!)
  • ASP.NET版本之間不匹配,例如,具有既ASP.NET服務器羣1.1和2.0同時使用

我想我的問題最近似於此列表中的最後一個。

我在表格回傳得到錯誤間歇性地(但通常)在我的2微軟Azure的Web服務器負載平衡測試環境。

我注意到,當一臺服務器產生的頁面張貼回其他發生的問題。當我取消負載平衡(僅僅打到一臺服務器)時,問題就消失了。

我在一臺Web服務器上使用Win Server 2008 R2(IIS7.5),另一臺服務器上使用Win Server 2012(IIS8)(我對2008年很熟悉,謹慎的2012年,但想學習,所以我選擇了運行其中的一個來對衝我的賭注,以防你想知道)。

2008整機運行ASP.NET版本 「4.0.30319。」 和2012年一個運行 「4.0.30319。」,但顯然不同版本的IIS。

但他們都運行ASP.NET 4.0。 .NET應該讓底層操作系統透明,對吧?所以我不太確定這是否會導致問題。

重新建一個服務器,使他們同樣是很繁瑣的事,並希望避免它,如果未成年ASP.NET差異不是問題的原因!

那麼還有其他什麼原因,兩臺服務器在回發時不會接受彼此的表單嗎?僅供參考,我已經在兩臺服務器上的web.config中添加了一個條目,以修復「驗證視圖狀態MAC失敗」錯誤。

或者是否有任何配置更改,我可以做,使服務器更兼容?

謝謝!

+0

有是你的頁面生成和發佈是回以確保沒有一個是改變你的頁面上的各種參數的「散列碼」。如果這兩個機器中的任何原因導致代碼不同,那麼就會失敗。 – Aristos

+0

要檢查您是否在兩臺計算機上有不同的驗證,請檢查來自每個計算機的兩個頁面,並查看__EVENTVALIDATION條目。一定是一樣的。如果不是,那麼這是問題。確保'machineKey'在兩臺計算機上都有相同的validationKey和驗證算法。 – Aristos

+0

@Aristos - 是的,machineKey在兩臺計算機上都有相同的validationKey和驗證算法。但是'__EVENTVALIDATION'條目與它們每個都有很大不同。在Win2012服務器上,'__EVENTVALIDATION'也是兩倍多。我會繼續調查。 – poshest

回答

-4

嘗試把以下在你的頁面directive-

<%@ Page EnableEventValidation="false" %> 
+2

是的,我在其他答案中看到了很多次的回答,以及許多建議不要使用它。我真的希望事件驗證帶來的安全性好處。 – poshest

3

所以我花了半天重樓我的網絡「農場」,使兩個服務器2008R2和問題走了!

我的(暫定)的結論是,ViewState的.NET 4.0.30319之間處理之間的差異...在服務器2008R2版本的VS 2012(包括完全不同__EVENTVALIDATION格式)是問題的原因。

我不能確定,因爲我設置2012服務器的方式可能與2008R2服務器不同。但是,在構建2012年服務器時,我嚴格遵循了我編寫的2008R2構建文檔,以至於我花了2天的時間修改構建以使其運行,這增強了我的信心,即我沒有錯過了明顯的東西

故事的道德(約80%的置信度):不要在ASP.NET部署中混用服務器版本,即使.NET的版本相同。

0

我有同樣的問題農場系統。我測試了幾種解決方案,並且工作的是:

  • 在一個系統上生成machineKey,然後複製到另一個系統。 (我在幾個論壇中發現了這個解決方案,但它本身不起作用)
  • 放置相同類型的compability。對我來說這是「Framework45」。 (從這個配置開始工作)。

例子:

<system.web> 
... 
<machineKey compatibilityMode="Framework45" decryptionKey="808A25F38661B8799CFD5B6FC5CF73D2988F5786CE46075D" validationKey="B75D59843CA111DF8596FCF865D9C0459B63B6ED474D4B23FD63A5F3A5AB18560A0D2A162191EC3354650CB37B174DDE187B29D424FC5CF60EFDA567BA64D3A3" /> 
... 
</system.web> 
相關問題