在网络场或群集中,或者在某些做了 CDN 加载的虚拟主机中,常常会出现 Cookie 提前过期、验证试图状态 MAC 失败这类的错误。
有人给的解决方案是:web.config 里加 EnableEventValidation="false" EnableViewStateMac="false" ViewStateEncryptionMode="Never"。
这个方案也太……既然出错,那咱就不用了吧。怎么能这样呢?出错就不用了?出错得解决问题。
错误原因
ASP.NET 中有很多涉及到加密的东西,比如 ViewState,比如 FormsAuthenticationTicket,这些东西都是要传送到客户端的,加密才能保障其安全性。
加密就得有个私钥,但这个私钥我们并没有指定啊,那是因为 ASP.NET 自动生成的。
但是如果是在网络场或群集中,或者在某些做了 CDN 加载的虚拟主机中,由于涉及到多台服务器 ASP.NET 就无法为各台机器自动生成相同的私钥,这就造成了这个服务器产生的数据,那台服务器解析不