2014-03-05 51 views
0

我一組特定的與我們的Web應用程序的步驟下,得到一個相當標準的事件驗證錯誤:頁事件驗證失敗發生在一個環境,而不是其他

Application_Error intercepted exception: Exception of type 'System.Web.HttpUnhandledException' was thrown. 
System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentException: Invalid 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 validation. 

真正headscratcher是,這是發生在我們的測試環境中,而不是我的開發環境,當我嘗試重新創建。我已經仔細閱讀過我們的web.config文件,看看可能發生了什麼變化,但我沒有看到任何跳出來的東西。這些代碼在環境之間完全相同 - TeamCity對此做了一定的規定。所以我強烈懷疑環境問題,但我不知道從事件驗證等事情開始。這通常是在代碼中處理的。

有沒有人有一個路徑來調查這個想法?我意識到我所做的一些細節是稀疏的,但那是因爲我們的開發環境中的一切工作都很好,沒有任何問題,所以我不知道什麼是相關的,噸。如果需要更多細節,請詢問我將很樂意提供。

+0

Web應用程序是否以服務器上運行的相同.NET版本爲目標? – James

+0

@詹姆斯:是的。那是我很快查過的。好的呼籲,應該提前說過。 – tmesser

回答

0

對於後代來說,就是這樣的情況。

我們有幾個通過HTTPWebSession緩存中的信息填充的下拉列表。大。在我們的工作流程中,我們也有一個AJAX部分回發,因爲我們必須對用戶輸入進行一些服務器端驗證,而不會將所有內容搞砸在屏幕上。仍然沒有問題。

此部分回發返回時,會出現問題,並嘗試使用一些CSS類鏈接到我們的項目中不存在的圖像。圖像被移動。這返回404s。只要代碼實際上不使用這些圖像,您仍然認爲這不是問題。事實並非如此。

問題是,在我們的測試環境中,404是404,它只是返回那個,沒什麼大不了的。在我們的生產環境中,我們將404錯誤重定向到我們的登錄頁面,因爲這是一種糟糕的用戶體驗,隱含地揭示什麼存在和不存在是不好的。這是環境因素。

...因爲我們在高安全性環境下工作,所以登錄頁面會將緩存作爲其PreRender的一部分進行擦除,所以無論它是否實際加載頁面圖形都沒關係。 Ergo,AJAX部分回傳擦除了緩存,這會在下拉列表中創建會話加載的信息 - 不會由部分回發更新! - 沒有預期的輸入。並且,完全合理的是,事件驗證在整頁提交中拒絕接受此輸入。

這個奇怪而複雜的問題已經解決了...通過刪除一個CSS類。

1

大概你已經在你的配置文件中檢查了enableEventValidation屬性 - 默認情況下它不存在。但它可能在一臺或兩臺機器上的machine.config中,導致該選項的配置不同。

+0

這種情況並非如此,而是一個聰明的觀察。謝謝! – tmesser

相關問題