我认为我已经尝试了对这个问题的所有标准响应,并且我知道我已经阅读了数百个关于这个问题的问题和帖子,但他们似乎都没有解决它或阐明原因在我的场景中。(我已经下降了 5 个小时,而且没有更近的时间了 :-( )
我有一个由 2 台服务器组成的网络农场。
我已经在两台机器上的 machine.config 中设置了机器密钥和验证密钥
加密:SHA1,解密:AES - 这些是默认值,可以更改它们吗?
我已验证链中没有其他配置文件(web.cfg、apphost 等)具有这些值的设置。
我已经向站点添加了一个页面(基于此 SO),该页面将机器键值吐回,并验证它们在对两台机器的请求中是相同的,并且与机器 .config 中的值匹配
服务器端会话状态处于共享状态服务器,我已经验证 sessionid 在对 2 个服务器的请求之间保持不变。
我已验证页面已完全加载,并且 __EVENTVALIDATION 隐藏字段已在开始发布之前呈现到页面中。视图状态大小在 7.64kb 时还不错
当页面从对服务器 1 的请求呈现,然后再发回服务器 2 时,我会感到害怕......
Error Message:
Unable to validate data.
at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) HttpApplication.RecordError => HttpApplication.RaiseOnError => global_asax.Application_Error
帖子是由一个标准的、纯粹的 asp 链接按钮触发的,页面上没有 ajax。
任何和所有的帮助将不胜感激。
设置 enableViewStateMAC = false 不是解决方案:-)