验证视图状态MAC失败 - "/"应用程序中的服务器错误

Dav*_*ohn 2 c# asp.net session session-timeout

我访问托管的Web应用程序时遇到此错误(在VS2008 C#ASP.NET 3.5 Framework中)

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

有趣的是,如果我们在登录过程后继续,则没有问题.如果您登录并在15或20分钟内不执行任何操作,则单击任何菜单...将生成此错误.所以我怀疑它与会话有关.在我的webconfig文件中,我按如下方式编写了会话超时.

<sessionState timeout="15" />
Run Code Online (Sandbox Code Playgroud)

我该如何更正此错误?

Jam*_*son 9

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

<pages enableEventValidation="false" viewStateEncryptionMode="Never">
Run Code Online (Sandbox Code Playgroud)

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

<pages enableViewStateMac="false">
Run Code Online (Sandbox Code Playgroud)

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

在我看来,这里提供了最好的整体解决方案.