【问题标题】:Validation of ViewState MAC FailedViewState MAC 验证失败
【发布时间】:2010-11-09 16:11:08
【问题描述】:

对不起,如果这是重复的,但过去两个小时我一直为此发疯。

在 ASP.NET MVC 1.0 应用程序中更改母版页后,当我尝试回发而不填写服务器验证的强制性表单元素时,我不断收到这个熟悉的错误:

“视图状态 MAC 的验证失败。 如果此应用程序由 Web 托管 场或集群,确保 配置指定 相同的validationKey和validation 算法。无法使用自动生成 在一个集群中。”

新页面引用了很多带有灯箱、超级鱼等的 jQuery 代码。在进行回发时会不会有问题?

如果我恢复到原来的主人,错误就会消失,我可以验证表单字段。两个 master 都位于同一路径中。

我知道很多其他人都面临过这个问题,但我找不到任何可以帮助我的东西。

谢谢。

已编辑和添加

经过一点调试,我意识到母版页中有一个指令:

<% Html.RenderAction("menu", "nav"); %>

正在制造问题。该指令要求控制器“nav”的“菜单”动作注入部分视图 Menu.ascx。如果我从新的母版页中删除这一行,一切正常。我的应用程序的左栏导航依赖此指令才能正常工作。有什么办法可以解决这个问题吗?很神秘。

【问题讨论】:

  • 好的,已经解决了。我使用 (Html.BeginForm()) { %> 表单元素 将
    表单元素
    替换为
  • 你使用的是MVC,所以不应该有带有runat的form标签,MVC中没有viewstate。您可以使用常规表单标签,但不要使用 runat="server"。

标签: c# .net asp.net jquery asp.net-mvc


【解决方案1】:

您是否在此页面的任何位置使用 Html.AntiForgeryToken()?有时,当我在本地使用多个不同的站点和/或端口更改进行测试时,这会发生在我身上。如果是这样,我会清除我的浏览器缓存,它工作得很好。

【讨论】:

    【解决方案2】:

    我确实遇到了同样的问题two days ago。 :)

    在我的情况下,简单的重启盒子就可以了,所以我没有进一步调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多