出版我的ASP.NET MVC Web應用程序的一個新的版本後,我經常會看到這樣的例外在瀏覽網站的時候拋出:的ViewState MAC的ASP.NET MVC驗證失敗
System.Web.Mvc.HttpAntiForgeryException:所需的防僞標記未提供或無效。 ---> System.Web.HttpException:viewstate MAC的驗證失敗。如果此應用程序由Web Farm或羣集託管,請確保配置指定相同的驗證密鑰和驗證算法。 AutoGenerate不能在羣集中使用。 ---> System.Web.UI.ViewStateException:無效的視圖狀態。
在我訪問我的Web應用程序的每個頁面上,這個異常都會繼續發生,直到我關閉Firefox。重新打開Firefox後,該網站完美運行。任何想法發生了什麼?
其他注意事項:
- 我沒有使用任何ASP.NET Web控件(也有在我的應用程序RUNAT = 「服務器」 的任何實例)
- 如果我拿出<%= HTML .AntiForgeryToken%>從我的網頁,這個問題似乎消失
即使輸入machineKey,我仍然收到錯誤。難道是服務器上的machine.config(我沒有訪問到這個)配置不正確? – jesperlind 2009-11-12 01:54:40
@jesperlind :(有點晚,但任何人閱讀這可能會有所幫助...)你仍然得到的錯誤,因爲你有一個來自添加機器密鑰之前的cookie。如果您將機器鑰匙從頭開始鎖定,它將無法順利運行。 – Guffa 2011-10-21 07:53:08
注意:請勿使用上述代碼中的確切機器密鑰。如果所有網站都有相同的機器密鑰,則很容易規避。使用在線機密鑰生成器生成唯一密鑰,例如http://aspnetresources.com/tools/machineKey – Guffa 2011-10-21 08:21:10