我知道有很多关于这个主题的问题,我已经全部阅读了。
我正在使用 IIS8、.Net 4.5。
用户随机收到无效的 View 状态错误,我无法弄清楚。一旦发生这种情况,他们返回网站的唯一方法就是清除浏览器缓存。
在我的 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>
我在虚拟专用服务器上运行,但我还没有找到大于 9kb 的 View 状态。
我的应用程序池设置为每天凌晨 3:00 重新启动一次。
我的页面使用了更新面板,也许用户正在点击“后退”?但我已经看到它只是访问页面而没有点击返回。
我注意到的一件事是我有 3 个不同的站点使用相同的应用程序池身份,但应用程序池是分开的。 machine.xml 中没有机器 key ,只有在我的 web.config 中。
最佳答案
调查的几种可能性:
更新面板会更改表单字段值(用于计算 ViewState 的值),然后页面会被 POST 回服务器,新值会导致验证失败。参见 this post
您启用了缓存(执行 HTTP header 的跟踪 - 确保您没有打开开发工具)这导致生成无效的 ViewState w/UpdatePanel 搞砸了。
<您是否在任何地方使用 Server.Execute? (请参阅上面的链接)
(不太可能)您的“虚拟专用服务器”是否已迁移到不同的硬件(可能在您不知情的情况下)?
关于c# - 随机无效 View 状态错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006400/