2015-06-23 261 views
11

我知道這個話題有很多問題,我已經閱讀了他們。隨機無效Viewstate錯誤

我使用IIS8,.Net 4.5。

用戶隨機得到無效的viewstate錯誤,我找不出來。一旦發生這種情況,他們可以回到網站的唯一方法就是清除瀏覽器緩存。

在我的web.config我有:

<system.web> 
<machineKey validationKey='....key here' decryptionKey='....decrypt key is valid here' validation='SHA1'/> 
    <!--<hostingEnvironment shadowCopyBinAssemblies="false" />--> 
    <authentication mode="None" /> 
    <compilation targetFramework="4.5.1" /> 
    <httpRuntime targetFramework="4.5.1" /> 
... 
</system.web> 

我是一個虛擬專用服務器上運行,而我還沒有找到一個比視圖狀態9KB大。

我的應用程序池設置爲在凌晨3:00重新啓動,每天一次。

我的頁面使用更新面板,也許用戶點擊'後退'?但是我發現只是訪問頁面而沒有點擊返回。

我注意到的一件事是我有3個不同的站點使用相同的應用程序池標識,但應用程序池是獨立的。 machine.xml中沒有機器密鑰,但只在我的web.config中。

+0

描述您的應用程序的目錄結構。你有有自己的web.config的子目錄嗎? –

+0

根目錄包含web.config,子目錄不包含。 – prospector

+2

**我已經閱讀了所有** - 最好說*你試過了什麼?這個問題聞到這種氣味#2 http://stackoverflow.com/a/577025/495455 –

回答

6

幾個可能的原因進行調查:

  1. 更新面板改變表單字段值(這是什麼來計算的ViewState),則該頁面被回傳到服務器,其中新價值使驗證失敗。請參閱this post

  2. 您啓用了緩存(執行HTTP頭的跟蹤 - 確保您沒有開放工具工具),導致無效的ViewState在UpdatePanel中產生。

  3. 您是否在任何地方使用Server.Execute? (參見上面的鏈接)

  4. (較不可能)你的「虛擬專用服務器」是否被遷移到不同的硬件(也許你不知道它)?