![](/img/trans.png)
[英]System.Web.UI.ViewStateException: Invalid viewstate
[英]Getting ViewStateException: Invalid viewstate while Machine keys are the same
通常,這是因為不同服務器的機器密鑰不同。 我們使用 Web Farm 來實現高可用性。 在這種情況下,如果客戶端發送請求,則負載均衡器決定為請求提供服務的網絡服務器。 多次發生另一個請求可能由另一個服務器提供服務的情況。 所以這就是問題所在。
眾所周知,view stat 是客戶端狀態管理技術,數據隨着請求和響應而傳輸。 因此,如果視圖狀態是用某個機器密鑰加密的,並且在其他請求中,如果由另一台服務器處理並且具有不同的機器密鑰,它將無法解密它,並且會通過錯誤。
每個服務器在設置為 auto 時都會生成一個新密鑰。 甚至有時應用域的任何回收都會在設置為自動時生成一個新密鑰。 這意味着我們不能使用默認的自動生成的密鑰。 所以這里的解決方案是在 machine.config 中使用特定的密鑰來防止在每個進程啟動時自動生成密鑰。
然而,另一種靈活的方法是將 MachineKey 部分添加到您網站的 web.config 文件中。 這不需要在每個 Web 服務器上進行更改。
另一種方法是您可以嘗試在 machine.config 中設置以下代碼:
enableViewStateMac="false"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.