【问题标题】:System.Web.UI.ViewStateException Invalid viewstate. Client IP: 127.0.0.1 Port: xxx Referer: http:///System.Web.UI.ViewStateException 无效的视图状态。客户端IP:127.0.0.1 端口:xxxReferer:http:///
【发布时间】:2014-10-23 14:52:32
【问题描述】:

我目前遇到一个间歇性问题,即用户收到此帖子标题中的错误消息:

System.Web.UI.ViewStateException 无效的视图状态。客户端IP:127.0.0.1 端口:xxxReferer:xxx

我终于设法在我们的开发环境中复制了这一点,它似乎与在 20 分钟不活动后发回表单有关。

我最初认为是会话超时导致了问题,但显然不是。

我找到了以下帖子:

Viewstate timeout error

这表明 ViewState 加密密钥具有有限的生命周期,默认情况下在服务器级别设置为:

<machineKey validationKey="AutoGenerate,IsolateApps"  
            decryptionKey="AutoGenerate,IsolateApps" 
            validation="SHA1" decryption="Auto" />

奇怪的是,并非所有用户都同时发生这种情况,所以这不是应用程序池回收。

有人知道每个用户会话是否生成一个密钥吗?

按照建议添加静态机器密钥配置,我已设法修复此错误

<machineKey validationKey="9664D19D67A5EE43FE77CD2B660A57DF254B15714935DDDDAAC94BC66C5C398F894380AD56572C8762A1AB116B9070C7ACC7F32B489D23476CEA909448831AF3" 
  decryptionKey="CAD9BBC02543433C50CD4A11EA706F0F25FCD51F28E9DEAF20361F0AA2AB3793" 
  validation="SHA1" 
  decryption="AES" 
/>

在生产环境中这样做安全吗?想要仔细检查一下,因为该应用程序已经运行了大约 10 年,这是一个全球性的变化,我不愿意在不知道利弊的情况下进行。

提前致谢。

【问题讨论】:

    标签: asp.net web-config viewstate machinekey


    【解决方案1】:

    这是为网络农场建议的,所以我认为这对于网络应用的单个实例来说是个问题。

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 2012-03-18
      • 2013-03-30
      • 2016-04-25
      • 2016-02-07
      • 1970-01-01
      • 2011-01-08
      • 2014-12-29
      相关资源
      最近更新 更多