雨夜征服华山暂且不叙,单说次日清晨来到华山之巅南峰顶时,手机传来了同事的声音,服务器被重启,之后ASP.NET程序运行出现了异常,无法登录使用,具体原因不明,给服务器管理员打电话,未通。此时的心情夹杂细雨雾气,身处华山之巅,却也有点眩晕。
拍过两张照,收起相机,定了定神。服务器一直运行的很好,自从出来游玩,也没有对其进行更新,问题应该不大,但又非常棘手。
下南峰的路上,我仔细考虑了所有可能的原因,但不了解具体现象,无法定论,半路信号也是很弱。崎岖山路,到达西峰时,电话再次响起,蹲在“华山论剑”石碑旁,里面是服务器管理员断断续续的描述,从其叙述中我了解了基本情况:
重新启动ASP.NET程序服务器之后,使用IE访问程序,登录时出现JS脚本错误,提示“Login未定义”(Login为登录操作使用的类型,确实存在于登录页面之中),之后没有反应。
从莫名提示类型丢失看,该错误原因很可能是ASP.NET引擎运行异常,重启IIS服务器和应用程序服务器,故障依旧。
猛然间,我想起了出发前2天在工作站机器上出现过同样的错误,定神搜索,嗯,有了。
“删除ASP.NET程序bin目录下的所有PDB文件即可!”,似乎只有这根救命稻草。
等下了西峰再次打电话询问,问题已经解决!不过,雨还在下。
原因分析:
PDB文件是.NET程序用于侦错跟踪的源码映像库,保存了源码的所有调试信息,其配合DLL托管文件对出错代码的位置进行定位。PDB文件一旦损坏,.NET引擎便无法正确跟踪托管代码,会出现“组件访问被拒绝”等各种莫名奇妙的错误。
另外,由于本文所述ASP.NET程序使用了AJAX技术,而损坏部分恰恰出现在异步模块,造成了JS脚本错误的另一种假象。
总结:
1、 出现问题,需定神,问清具体情况以分析原因。
2、 摔过的跟头要记着疼,注意平时积累,记录每一个曾经遇到的问题。
3、 对于他人的问题,需要倾心帮助,说不定之后你会遇到。
4、 山里打手机,要在高处,或者有基站的地方。