【问题标题】:Random Invalid Viewstate Error随机无效视图状态错误
【发布时间】:2015-09-09 11:10:48
【问题描述】:

我知道有很多关于这个主题的问题,我已经全部阅读了。

我正在使用 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 中。

【问题讨论】:

  • 描述您的应用程序的目录结构。您是否有拥有自己的 web.config 的子目录?
  • 根目录包含web.config,子目录不包含。
  • 我已全部阅读 - 最好说一下您尝试过的什么?这个问题闻起来有这种气味#2 stackoverflow.com/a/577025/495455
  • @JeremyThompson 同意 - UpdatePanel 有异味
  • 应用程序是否设置在负载平衡的环境中?

标签: c# asp.net webforms .net-4.5


【解决方案1】:

调查的几种可能性:

  1. 更新面板正在更改表单字段值(用于计算 ViewState),然后页面被 POST 回服务器,新值使验证失败。见this post

  2. 您启用了缓存(执行 HTTP 标头跟踪 - 确保您没有打开开发工具),这会导致生成无效的 ViewState,而 UpdatePanel 搞砸了。

    李>
  3. 您是否在任何地方使用 Server.Execute? (参见上面的链接)

  4. (不太可能)您的“虚拟专用服务器”是否会迁移到不同的硬件(可能在您不知情的情况下)?

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2013-09-30
    • 2014-10-05
    • 2011-12-30
    相关资源
    最近更新 更多