我知道关于这个主题有很多问题,我已经阅读了所有这些问题。
我正在使用 IIS8、.Net 4.5。
用户随机收到无效视图状态错误,我无法弄清楚。一旦发生这种情况,他们返回网站的唯一方法就是清除浏览器缓存。
在我的 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 的视图状态。
我的应用程序池设置为每天凌晨 3:00 重新启动一次。
我的页面使用更新面板,也许用户正在单击“后退”?但我已经看到这种情况发生只是访问页面而不点击返回。
我注意到的一件事是我有 3 个不同的站点使用相同的应用程序池标识,但应用程序池是独立的。 machine.xml 中没有机器密钥,但仅在我的 web.config 中。
需要调查的几种可能性:
更新面板正在更改表单字段值(用于计算 ViewState),然后页面被 POST 回服务器,新值使验证失败。看这个帖子 http://forums.asp.net/t/1092020.aspx?viewstate%20is%20invalid%20using%20UpdatePanel
您启用了缓存(执行 HTTP 标头跟踪 - 确保您没有打开开发工具),这会导致使用 UpdatePanel 生成无效的 ViewState,从而将事情搞砸。
您在任何地方使用 Server.Execute 吗? (参见上面的链接相同)
(不太可能)您的“虚拟专用服务器”是否迁移到不同的硬件(也许您不知道)?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)