我知道有关此主题的问题很多,我已经阅读了所有问题。

我正在使用IIS8,.Net 4.5。

用户随机获得无效的viewstate错误,我无法弄清楚。一旦发生这种情况,他们返回网站的唯一方法就是清除浏览器缓存。

在我的web.config中,我有:

<system.web>
<machineKey validationKey='....key here'   decryptionKey='....decrypt key is valid here'   validation='SHA1'/>
    <!--<hostingEnvironment shadowCopyBinAssemblies="false" />-->
    <authentication mode="None" />
    <compilation targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
...
</system.web>

我在虚拟专用服务器上运行,但尚未找到大于9​​kb的viewstate。

我的应用程序池设置为每天凌晨3:00重新启动。

我的页面使用更新面板,也许用户单击了“后退”?但是我已经看到,只要不点击就可以访问页面。

我注意到的一件事是,我有3个不同的站点使用相同的应用程序池标识,但是应用程序池是分开的。在machine.xml中没有机器 key ,但仅在我的web.config中。

最佳答案

有两种可能的调查方法:

  • 更新面板正在更改表单字段值(用于计算ViewState的值),然后页面被回发到服务器,新值使验证失败。参见this post
  • 您已启用缓存(执行HTTP header 痕迹-确保您没有打开开发工具),这会导致生成无效的ViewState(使用UpdatePanel阻塞)。
  • 您是否在使用Server.Execute在任何地方? (请参阅上面的链接以获取相同信息)
  • (不太可能)您的“虚拟专用服务器”是否已迁移到其他硬件(也许您不知道)?
  • 关于c# - 随机无效的 View 状态错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31006400/

    10-10 05:06