关于IIS Server Application Error错误的又一原因及解决

许多天没有登陆服务器了,担心FTP中转站别又要快空间不足了。下午上去看了看。服务器已经连续运行36天了,也没出现任何问题,感到还是比较稳定。



但问题偏偏出现在这个时候。
顺便把服务器上的有关软件升了一下级并打了一下最新的补丁。另外也看了一下流媒体服务有没有出现什么问题,也没有。习惯性的打开本地用户和组其中有一个用户以前建立了没有用到,就删除了。但就是之后,网站却怎么也无法访问了。排除了是网络的原因,因为我用的远程登陆,如果网络出问题就会断掉 。服务器上装有防火墙,并且也刚升过级,怀疑是防火墙的问题,虽然退出了防火墙,但使用任务管理器查看进程发现仍然有防火墙的进程并且结束不掉,于是拿出“冰刃”强行结束。结束后也无济于事。重新启动防火墙并仔细检查防火墙的设置以及计算机所有端口的开关未果。一时陷入僵局[biggrin]。IIS Admin service重新启动了几次后终于能够连接了。但是出现错误:
Server Application Error 

The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.


以前曾经遇到过IIS 的500错误,去除了显示友好的HTTP错误信息后并且排除了是ASP程序错误的原因常碰到的情况就是这种情况了,网上有很多如下的讨论:

该错误主要是由于IWAM账号的密码错误造成了HTTP 500内部错误。 


   在详细分析HTTP500内部错误产生的原因之前,先对IWAM账号进行一下简要的介绍:IWAM账号是安装IIS5时系统自动建立的一个内置账号,主要用于启动进程之外的应用程序的Internet信息服务。IWAM账号的名字会根据每台计算机NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由“IWAM”前缀、连接线“_”加上计算机的NETBIOS名字组成。我的计算机的NETBIOS名字是MYSERVER,因此我的计算机上IWAM账号的名字就是IWAM_MYSERVER,这一点与IIS匿名账号ISUR_MACHINE的命名方式非常相似。 


IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。按常理说,由操作系统负责的工作我们大可放心,不必担心出错,但不知是BUG还是其它什么原因,系统的对IWAM账号的密码同步工作有时会失败,使三方IWAM账号所用密码不统一。当IIS或COM+应用程序使用错误IWAM的密码登录系统,启动IIS Out-Of-Process Pooled Applications时,系统会因密码错误而拒绝这一请求,导致IIS Out-Of-Process Pooled Applications启动失败,也就是我们在ID10004错误事件中看到的“不能运行服务器{3D14228D-FBE1-11D0-995D-00C04FD919C1} ”(这里{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled Applications的KEY),不能转入IIS5应用程序,HTTP 500内部错误就这样产生。

      解决的方法是人工同步IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序中的密码。这个我很早前试验过,其中有一步没能成功。也可能是我当时水平有限的原因。反正这次我是不打算使用这种方法了,太麻烦,而且也不一定能成功。想出的新的方法是删除与IIS相关的用户,重新安装IIS. 但是这样远程来做的话也不是很方便,只能用IIS安装包来安装,而且经常遇到安装包不完整而无法安装的情况,那样的话就麻烦了。突然想起没有看日志,马上翻开日志,发现大片的审核失败。帐户正是上面提到的帐户。








      继续查看帐户属性发现帐户已锁定(上面抓图时为不影响网站正常访问已经修改过来了)立即明白原因了!我为了安全曾设置过如下的本地帐户的安全策略:





设定为3次无效登陆后锁定帐户60分钟。刚才我发现网站不能登陆后反复尝试的次数早已超过三次。所以帐户被锁定了也就无法访问了,将帐户解锁。重新测试,一切OK!


后记:服务器当中IIS的用户是隶属于guest的级别的用户,并且已经结合磁盘权限严格设置了的。这台服务器是Windows 2000 Advanced server我在另一台Window server 2003当中也碰到过一种类似的情况,服务器上有很多站点,其中一个也是出现错误,当时根据错误百度的时候很多资料说是脚本的dll文件需要重新注册,当时利用这种方法未能解决。后来尝试将原来的应用程序池(站点都是使用的独立的应用程序池,IIS6不同于IIS5的一大区别)删除重新建立就好了,并且设定回收时间短一些就可以了。


    本文没什么很深的技术含量,全当提供一种解决问题的思路吧。很多时候网上所说的并不一定适合于你所碰到的情况。还是应该认真分析,不要急于拿来别人的案例就下手。


      转载请注明出处:http://www.xpb.cn
[本日志由 Admin 于 2006-04-12 09:31 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 2 | 引用: 0 | 查看次数: 6058
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 1+0=?
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册账号.
字数限制 500 字 | UBB代码 关闭 | [img]标签 关闭