2009-12-10 282 views
1

運行ASP.NET webforms運行應用程序工作正常。當應用程序閒置4到5分鐘時,會發出此錯誤:視圖狀態MAC驗證失敗

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.

這怎麼解決?

+0

投票關閉,確切的重複的[CryptographicException:填充是無效的,無法刪除和驗證視圖狀態MAC失敗](http://stackoverflow.com/questions/1821243/cryptographicexception-padding-is-invalid-and-不能被刪除和驗證o) – 2010-09-20 18:03:06

+0

不幸的是,這既是ASP.NET的一個bug,也是一個功能。 – 2010-09-20 18:04:17

+0

我已經將頁面設置添加爲false和機器密鑰。兩個應用程序中的相同機器密鑰仍然顯示相同的錯誤 – Razack 2015-11-14 08:41:43

回答

0

修改你的web.config與此元素:

<pages validateRequest="false" 
     enableEventValidation="false" 
     viewStateEncryptionMode ="Never" /> 

所需的任何詳細信息,請參閱ASP.NET Forums topic

+0

好先生solairaja我會嘗試這個感謝的迴應 – 2009-12-10 06:18:59

+0

讓我知道它是否工作或太工作 – solairaja 2009-12-10 07:11:36

+0

好吧我會告訴你好 – 2009-12-10 08:07:16

2

這個免費的在線工具:http://aspnetresources.com/tools/machineKey產生下machineKey元素web.config文件中的system.web元素。 這裏是什麼它生成一個例子:

<machineKey validationKey="1619AB2FDEE6B943AD5D31DD68B7EBDAB32682A5891481D9403A6A55C4F91A340131CB4F4AD26A686DF5911A6C05CAC89307663656B62BE304EA66605156E9B5" decryptionKey="C9D165260E6A697B2993D45E05BD64386445DE01031B790A60F229F6A2656ECF" validation="SHA1" decryption="AES" /> 

一旦你看到這個在你的web.config,錯誤本身突然有道理。 你所得到的錯誤說

"ensure that configuration specifies the same validationKey and validation algorithm".

當你看這個machineKey元素,突然間你可以看到它在說什麼。

在適當位置修改system.web元素下的pages元素可能不是必需的。這避免了與這些屬性相關的安全問題。


通過在你的web.config「硬編碼」這個值,即asp.net使用序列化和反序列化視圖狀態的鑰匙留在服務器場中是相同的,無論哪個服務器撿起來。您的加密變得「便攜」,因此您的視圖狀態變得「便攜」。

我只是猜測也許非常相同的服務器(不在農場)有這個問題,如果由於任何原因它忘記了它的密鑰,由於任何級別上的重置擦除它出。這也許就是爲什麼你會在空閒時間後看到這個錯誤,並嘗試使用「陳舊」頁面。

+0

切勿使用公共資源獲取機器密鑰。 – Marcel 2017-05-03 09:31:47

0

這不是你的問題,但它可能會幫助別人。確保你張貼回同一頁面。檢查表單標記上的操作,並使用Firefox Live HTTP標題查看瀏覽器請求的URL。

我遇到過這個問題,因爲我發回了一個具有相同名稱但路徑不同的頁面。