请不要将此信息标记为duplicated.。请帮助我解决我的问题,因为我是 asp.net 的新手。我对理解有些困难。
我正在开发 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>
填写完表单后,提交时会出现以下错误。
对viewstate MAC的验证失败。如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法。 AutoGenerate无法在群集中使用。
我尝试添加EnableViewStateMac="false"
但没有运气。
请建议我解决这个问题,并感谢您能解释一下为什么会这样。
答案 0 :(得分:2)
ASP.NET与Web开发中的其他语言具有非常不同的模型,旨在模拟Windows Forms开发范例。而在其他语言中,通常发布到另一个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&#34;在生产服务器上,它是一种防止用户篡改视图状态数据的机制,关闭它会消除这种保护 - 只处理问题的症状,而不是原因。
在这种情况下我不认为这是问题,但是如果出现此错误,在将数据存储到之前,您始终不会检查是否未将ViewStateUserKey设置为会话ID会话(ASP.NET不会跟踪会话不包含数据的会话ID。)