根據this頁面有4個原因,你可能會得到這樣的錯誤:(多服務器環境)
- 應用程序運行在一個農場
- 工作進程使用IIS 7.0 *應用通過使用
LoadUserProfile = false
Page.ViewStateUserKey
屬性配置池標識
- 應用程序池具有不正確的值
*注意:根據文章,這已不再是從IIS 7.5開始的問題。
大圖
問題的大畫面是用於加密視圖狀態數據的加密密鑰不被持續(對於上述那些中的一個或組合的這些原因),因此,新的加密密鑰是產生的不符合原來的一個。您可以通過幾種方法持久保存此密鑰(或讓您的應用程序使用正確的密鑰)。見下面的解決方案
解決方案
- 手動設置的machineKey在web.config中
- 使用ASPNET_REGIIS實用程序來運行託管應用程序,其中機鍵將被保留。
- 運行PowerShell腳本以在HKLM註冊表中保存機器密鑰,而不是在HKCU註冊表中。
- 設置
LoadUserProfile = true
使HKCU註冊表配置單元可用於應用程序。
- 檢查
Page.ViewStateUserKey
屬性的正確性,以查看消費值是否與生成密鑰時的值(即,如果使用此屬性)匹配。
這是一個快速概述。有關該問題的任何原因(以及#3中的PowerShell腳本)的更多詳細信息或該問題的解決方案,請查看文章以排查您的特定情況並選擇最適合您的用途的解決方案。
在該頁面上完全禁用ViewState。無論如何,你可能並不真的需要它。 – VDWWD