第一次写BLOG,没有什么技术可以分享,就说说这几天发布新网站的事。
按照计划,一步一步的从旧网站转到了新网站了,进行到晚上0800多,一切顺利,没收到什么太多的error email,数据库也运作良好,客户开始login,检查日志,邮箱,都没问题,正要高兴时,突然开始收到email, 记录了"Unable to validate data exception, 查了下google,MS support说是viewstate出了问题,有三种情况
1) If this is a cluster, edit <machineKey> configuration so all servers
use the same validationKey and validation algorithm. AutoGenerate
cannot be used in a cluster.
2) Viewstate can only be posted back to the same page.
3) The viewstate for this page might be corrupted.
我们正好用了第一种情况,web farms,有两台web server, 但网管说理论上没问题,因为接口使用cookie,使每一个用户都始终连到同一个web server. 但不管了,先要求关闭一台,然后按照MSDN所说的设置好machine key(参照link),重新发布网站。
1。http://support.microsoft.com/default.aspx?id=831150
2。http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfmachinekeysection.asp
3。http://support.microsoft.com/?id=312906How to create keys by using Visual C# .NET for use in Forms authentication
然而,几分钟后,仍然收到error的报告,几个人开始在网上开始寻找相关信息,但大都数文章就如前文所说,只指出了三种情况,我们的网页中并没有使用动态load user control,忙了整整一天,没有头绪,在本地的所有机器上都测试了,正常,无法得到此类exception,就在大家痛苦之中,project manager比较细心,分析了下数据,大多数的客户都能运作,只有很小部份 客户有错,而且没有接到客户投诉电话,估计是客户设置问题,调整了关键词,重新google,终于在一个forum中找到了相关问题(http://www.dotnetjunkies.com/Forums/ShowPost.aspx?PostID=6525),原因就在于客户IE中internet options ->General->Temporary internet files->Settings 中的check for newer versions of stored pages: 大多数人都设置antomatically. 但有人设置成never, 从cache里取的是older page,viewstate当然出错,于是在web pages里加入
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
问题解决,但愿能给其它人一些提示。
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
问题解决,但愿能给其它人一些提示。
浙公网安备 33010602011771号