Web服务器发生了硬件故障,修好后将Web站点迁回到服务器上,很快所有网站都能正常访问了。这时发现有两个网站,打开后需要输入用户名和密码进行登录,但输入用户名和密码后登录失败。在服务器上打开网站登录,提示禁用了Cookies,在客户端上打开网站登录,点击确定按钮后没有任何提示。检查了一下没能发现问题,于是开始深入排查故障。
先说一下服务器环境:Windows Server 2003 Enterprise、IIS 6、ASP.NET 2.0。在服务器上登录,提示无法写入Cookies,因此首先考虑的是浏览器的权限问题。将IE的安全性调到最低,还是无法登陆,可以确定不是Cookies设置的问题。在客户端上登录,则没有任何提示。根据程序的处理流程判断,在客户端登录时,浏览器没有将验证信息写入Cookie,造成登陆后缺乏验证信息而跳回登陆页面,给人造成的感觉是点击登陆后没有反应。
用Firefox访问网站,竟然能成功登录,但IE却不能登录,这时初步判断是IE无法存储Cookies造成的这个故障。换了好几台电脑,IE均无法登陆,因此怀疑是由于IIS的设置造成了IE无法存储Cookie,继续排查。
设置Web站点读写权限、关闭其它软件、停止杀毒软件、重建Web站点、还原IIS设置,各种方法都用过了,还是无法解决故障。网上搜索IIS设置影响IE浏览器的资料,也没能找到。然后打开备份系统的站点,却能够正常登录,更加确定了是IIS的问题,但如何继续排查,却没有头绪了。
看着服务器上的时间,已经凌晨2点多了,心里开始有点没底了,考虑是不是要把系统切到备份环境去,不然一会天亮了再切换就来不及了。但还是希望能解决掉这个故障,不启用备份系统。这样又研究了一段时间,再一看表,发现时间还不到1点。心里挺纳闷,以为刚才看错点了,看了看手机,发现确实不到1点。然后再看服务器,时间是2点多,这才发现因为服务器更换硬件,BIOS时间被清空了,现在服务器上的时间要比标准时间晚半年。这下彻底明白了故障所在,因为Web站点的登录Cookie设置的失效时间是半小时,服务器的时间晚了这么久,客户端一登录,Cookie马上就会过期,因此不管怎么等也无法存储Cookie,自然登不上去了。将服务器时间改正确后,登陆成功,故障顺利解决。