验证视图状态MAC失败

时间:2013-01-14 17:43:26

标签: asp.net

请不要将此信息标记为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"但没有运气。

请建议我解决这个问题,并感谢您能解释一下为什么会这样。

1 个答案:

答案 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。)