2013-01-14 119 views
1

請不要將此標誌標記爲duplicated.。請幫我解決我的問題,因爲我很新asp.net我對理解有些困難。驗證視圖狀態MAC失敗

我正在研究VS 2010並嘗試熟悉asp.net網站。我有兩個網頁,稱爲Default.aspx和Result.aspx。

Default.aspx的

<form id="Form1" runat="server" action="Result.aspx"> 
    //Some Controllers (Dynamically added textboxes and submit button) 
</form> 

一次我填寫表格,而當它提交以下錯誤來。

驗證視圖狀態MAC失敗。如果此應用程序由Web Farm或羣集託管,請確保配置指定相同的驗證密鑰和驗證算法。 AutoGenerate不能在羣集中使用。

我試圖添加EnableViewStateMac="false",但沒有運氣。

請指教我解決這個問題,並感謝如果你能解釋我爲什麼會這樣。

+0

某些控制器?您使用的是MVC嗎? –

+0

對不起,如果我的話誤導你我正在使用web表單 –

回答

2

ASP.NET與Web開發中的其他語言有着非常不同的模型,旨在模擬Windows窗體開發範例。而在其他語言中,通常發佈到另一個URL,ASP.NET中的操作通常通過回發到同一頁面上的事件來完成。您遇到的問題與您將ViewState發佈到其他頁面的事實有關,請參閱http://blogs.msdn.com/b/tess/archive/2009/04/14/validation-of-viewstate-mac-failed-after-installing-net-3-5-sp1.aspx。另外,您不應該在生產服務器上設置EnableViewStateMac = false「,它是一種防止篡改用戶視圖狀態中的數據的機制,將其關閉將取消此保護 - 並且僅處理問題的症狀,而不是原因

我不認爲這是在這種情況下的問題,但有了這個錯誤,總是有必要檢查你沒有設置ViewStateUserKey到會話ID之前,你有存儲在會話中的數據(ASP.NET不會跟蹤會話ID不包含數據的會話ID)