我有一个奇怪的重复出现的错误,我认为这与View State和安全设置有关。这个错误出现在我的客户的一个网站上,每天1到6次:
来源:System.Web
错误:/detail.aspx?CaseID = 1852
错误消息:无法验证数据。
堆栈跟踪:在System.Web.Configuration.MachineKeySection。** EncryptOrDecryptData(** Boolean fEncrypt,Byte [] buf,Byte [] modifier,Int32 start,Int32 length,IVType ivType,Boolean useValidationSymAlgo)
在System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
在线研究导致了一种可能性。我相信它与安全性和ViewState有关。因为这是一个电子商务网站,我采取了额外的步骤,以防止许多款待,包括XSS和CSFR。以下是我采取的步骤:
该网站使用 ASP.NET 3.5 SP1 和 AJAX 托管在Win2003虚拟服务器上。该页面没有使用缓存,当您将ViewStateUserKey键设置为唯一值(例如SessionID)时,我发现某些文章提示这是一个问题。如果我在浏览器中关闭cookie并尝试查看其中一个产生错误的页面,我可以复制这个确切的错误。
注意,错误消息未提及MAC失败
答案 0 :(得分:0)
我的理论是那些遇到此错误的人是在具有代理/缓存服务器的网络上。我的解决方案是仅在安全连接时设置ViewStateUserKey。大多数代理/缓存服务器仅设置为缓存HTTP连接,而不是安全连接。