我遇到了一個我正在管理的Web應用程序的問題。偶爾會出現以下錯誤的用戶:ASP.NET應用程序每隔幾分鐘就會損壞視圖狀態
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
問題是它不是一個集羣 - 它是一臺Windows 2003服務器。周圍挖之後,似乎增加了的machineKey部分和一些額外的屬性到頁面在我的web.config指令解決這個錯誤:
<machineKey validationKey='MACHINE KEY SNIPPED'
decryptionKey='DECRYPTION KEY SNIPPED'
validation='SHA1'/>
<pages validateRequest="true" enableEventValidation="false">
在我的web.config改變這兩樣東西后,錯誤消失,但現在我有一個新問題 - 而不是一個錯誤,我的viewstate無效,應用程序只是「忘記」我的用戶是誰,並將它們發送回登錄頁面。現在,用戶正在瀏覽應用程序,然後他們意外地被髮送到登錄頁面,即使他們已經登錄了幾分鐘。雖然我不能強迫這種情況發生,但通常會在訪問10-12個不同的頁面時發生,因此經常發生。
我很想解決這個問題 - 是否有人知道還有什麼可能導致單個服務器上的視圖狀態錯誤,或者我能做些什麼來確保它的正確驗證?
永遠不要關閉事件驗證。有一個非常狹窄的時間你想要做到這一點,並試圖繞過導致你的應用程序池回收的東西不是其中之一。現在,如果攻擊者知道他們在做什麼,他們將能夠觸發事件以禁用頁面上的隱藏控件。 – blowdart 2010-01-24 16:27:10
你在做網址重寫嗎?如果是這樣的網址被設置爲匹配頁面,表單驗證反對?使用相同的錯誤消息更改表單驗證toasts查看狀態。 – 2010-01-24 18:24:29
任何解決方案? – Kiquenet 2011-01-04 09:52:10