ASP.NET Viewstate错误问题

时间:2011-07-17 08:57:41

标签: c# .net asp.net

我们有一个使用viewstate的asp.net网页。在漫长的操作(超过12分钟)期间,会发生与视图状态相关的错误,如下所示。

The controls from the page gets vanished. 
It simply writes on the screens as 
"input type=”hidden” name= ”_VIEWSTATE” id= ”_VIEWSTATE” value =’/wEPDw…” 

当避免使用视图状态时,这样可以正常工作。还有一个观察结果是,当我们连接到VPN并将其作为内部网运行时,即使使用viewstate也能正常工作。

我已经从Does viewstate expire?读到“即使ViewState不会过期,如果使用不同的自动生成的密钥来解密ViewState,例如在IIS重置,重新部署应用程序或命中之后,它也会失效Web场中的其他服务器。“

•我们有一个负载均衡器(有两个Web服务器)

•我们没有重新启动IIS

•我们没有在测试期间重新部署应用程序

那么,出现此错误的可能原因是什么?如何在不删除viewstate的情况下解决它?

这可能与Proxy server truncating View State有关吗?如何确认是代理还是防火墙引起的问题?

由于

Lijo

1 个答案:

答案 0 :(得分:4)

  

我们有一个负载均衡器(有两个Web服务器)

因此,请确保您在两台Web服务器上指定了相同的machine keys,而不是默认的自动生成值。您还可以在应用程序的web.config中指定此值:

<machineKey 
    validationKey="21F090935F6..."           
    decryptionKey="ABAA84D7EC4..."
    validation="SHA1"
    decryption="AES"
/>

这将确保无论哪个Web服务器加密了viewstate,另一个都能够解密它。您还可以使用online tool生成计算机密钥。