2010-12-08 74 views
0

我得到以下例外情況每隔幾天:視圖狀態異常

System.Web.HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. ---> System.Web.UI.ViewStateException: Invalid viewstate. 

的事情是,我有一臺機器按鍵,而且我也只使用一臺服務器(即沒有集羣)。那麼爲什麼會發生這種異常?我能想到的唯一的事情是,我一直在重新設置IIS服務器,但我無法弄清楚爲什麼這是一個問題。你們是否經常看到這個例外?

僅供參考,下面在我「的System.Web」存在:

<machineKey validationKey="Blah1" decryptionKey="Blah2" validation="SHA1" decryption="AES" /> 
+0

很多信息,如果你想挖掘它:http://stackoverflow.com/search?q=Validation+of+viewstate+MAC+failed(我不知道真正的答案是什麼。/) – Greg 2010-12-08 16:24:39

回答

1

要詳細一點上Brian的點,原因頁面,這是「相當大」的經驗問題是,這些網頁有時渲染速度非常緩慢,以至於在ViewState完成下載之前按下「提交」按鈕,導致它出現損壞並生成錯誤。

唯一的解決方案,這是:

  1. 禁用ViewState中完全

  2. 使用腳本只允許提交後,頁面完全加載

  3. 確保ViewState的是儘可能接近頁面的頂部儘可能(我認爲如果您的網站是公開的對SEO不利)。

您可以嘗試通過查看加載的速度頁面與異常的時間之間是否存在任何關聯來證明這種情況。使用像LogParser這樣的工具可以解決這個問題。