【问题标题】:Validation of viewstate MAC failed- Server Error in '/' Application验证视图状态 MAC 失败 - “/”应用程序中的服务器错误
【发布时间】:2012-01-01 04:01:57
【问题描述】:

当我访问我的托管 Web 应用程序时出现此错误(在 VS2008 C# ASP.NET 3.5 框架中)

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

有趣的是,如果我们在登录过程之后继续,是没有问题的。如果您登录后 15 或 20 分钟无任何操作,然后单击任何菜单...将生成此错误。所以我怀疑它与会话结束有关。在我的 webconfig 文件中,我写了会话超时,如下所示。

<sessionState timeout="15" />

我该如何纠正这个错误?

【问题讨论】:

  • 尝试在 httprumtime 中添加 RequestValidationMode="2.0"。
  • @www.DotNetNukeLab.com..RequestValidationMode="2.0" 应该放在哪里?
  • 您是否在不止一次的服务器上托管您的网站并使用负载均衡器?

标签: c# asp.net session session-timeout


【解决方案1】:

有几种方法可以解决此问题,但有些解决方案比其他解决方案更好。最快的方法通常是将以下内容添加到web.config

<pages enableEventValidation="false" viewStateEncryptionMode="Never">

上述解决方案的问题在于您牺牲了一些安全性。下一个“快速修复”是将以下内容添加到web.config,但这也有缺点:

<pages enableViewStateMac="false">

如果此应用程序由网络场托管或以其他方式分布在多个网络服务器上,您可能应该避开该选项。

在我看来,最好的整体解决方案是here

【讨论】:

  • 这是从 2011 年开始的,但我看到人们仍在遵循这个 [坏] 建议。在 ViewState 上禁用加密和验证是危险的。我建议人们点击帖子末尾的“最佳整体解决方案”链接,然后遵循该建议(即设置 machineKey)。另见:stackoverflow.com/questions/7349118/…
【解决方案2】:

我相信您的问题出在应用程序池“空闲超时”字段中。 您必须要求您的提供者将其更改为更大的内容...比如说 20 分钟

看看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2019-10-26
    • 2010-09-24
    • 2011-12-18
    相关资源
    最近更新 更多