1

请不要将此帖子标记为重复。. 请帮助我解决我的问题,因为我对asp.net很陌生,我在理解上有一些困难。

我正在开发VS 2010并尝试熟悉asp.net 网站。我有两个名为Default.aspx 和 Result.aspx 的网页。

默认.aspx

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

一旦我填写表格并提交时,就会出现以下错误。

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。

我试图添加EnableViewStateMac="false"但没有运气。

请建议我解决这个问题,如果你能解释一下为什么会这样,我将不胜感激。

4

1 回答 1

2

ASP.NET 与 Web 开发中的其他语言有一个非常不同的模型,旨在模拟 Windows 窗体开发范式。在其他语言中,通常发布到另一个 URL,而 ASP.NET 中的操作通常是通过回发到同一页面上的事件来完成的。您遇到的问题与您将 ViewState 发布到另一个页面的事实有关,请参阅http://blogs.msdn.com/b/tess/archive/2009/04/14/validation-of-viewstate-mac-failed -安装后-net-3-5-sp1.aspx

顺便说一句,您不应该在生产服务器上设置 EnableViewStateMac=false",它是一种防止篡改用户在视图状态中保存的数据的机制,将其关闭会删除这种保护 - 并且只处理问题,不是原因。

在这种情况下,我认为这不是问题,但是由于出现此错误,在将数据存储在会话中之前,始终值得检查是否没有将 ViewStateUserKey 设置为会话 ID(ASP.NET 不会跟踪会话 ID其中会话不包含数据)。

于 2013-01-15T02:10:11.410 回答