IIS 500 错误追根溯源

 

IIS 500 错误追根溯源

文/东莞市莞城一中 赵万成

IIS5HTTP 500内部服务器错误是我们经常碰到的错误之一,它的主要错误表现就是ASP程序不能浏览但HTM静态网页不受影响。笔者前一段时间就碰到并解决了这个问题,期间经过自己了不断的失败与迷茫,但摸索到最后终于追查到问题的根源所在,并从中得到许多有用的启示,希望借此与同行分享网络管理“酸、甜、苦、辣”的生活。

 


去年年底,为了扩大校园网的应用,学校组织了一大堆的班级、学生<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />和老师个人的主页,笔者将它们全部放在学校的Web服务器上,服务器操作系统当时用的是Windows Server 2003企业版本,应用程序服务器是它内带的IIS 6.0。过了几天,在内网中打开笔者放在该服务器中的个人主页(http://warmrose.126.com)的ASP留言板时却出现。

 IIS500-01.tif

图注 IIS 500是最常见的IIS错误

 

IIS 500错误常规解决方法

IIS 500HTTP 500 错误,笔者根据以往经验推断,这不过是一个小问题。这个错误经常出现,也有许多网友提出了相应的解决办法。常规解决方法主要有以下两个。

1.没有打开ASP支持

这其实是很粗心的一个错误,Windows Server 2003中没有打开ASP的支持,解决方法也很简单,即从IIS管理器中打开对ASP的支持。

 IIS500-02.tif

图注 打开Windows Server 2003ASP支持

 

2. IWAM账号密码导致

IWAM_机器名”这个账号是IIS安装时自动创建的,并被Active DirectoryIIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,由操作系统负责这三方保存的IWAM密码的同步工作。当IWAM账号的密码同步工作出现问题时,就会导致HTTP500内部错误。解决办法网上有很多论述,笔者就不再详细说明了,主要是人工同步IWAM账号在Active DirectoryIIS metabase数据库和COM+应用程序中的密码,让三者的密码都一致即可。

但当笔者去真正操作时,却发现ASP支持已打开,而且Windows Server 2003IWAM账号管理更安全,实在是无从下手,而且直觉告诉我这个地方应该是没有问题的,那么问题在哪儿呢?严重苦闷……

 

Frontage导致IIS 500错误

笔者最后无奈接受技术人员同行的“忠告”:“Windows Server 2003ASP的支持并不好,还是用Windows 2000 Server 系列进行IIS管理吧!”……于是,重新用Windows 2000 Server对服务器进行了系统“降级”安装,心理极度不爽,过程却相当顺利。安装完成后,配置IIS服务器,再运行IE浏览器访问笔者主页的留言板,一切正常,以为真的就是Windows Server 2003的兼容性问题了,但不明白为什么以前这台服务器就能正常访问这ASP留言板呢?不管它,笔者再将学校的主页挂上去,重新浏览留言板,问题却再次出现!

看来并不是Windows系统的问题,一定是学校的主页中有什么“破坏性”的代码!但具体是哪一个主页哪一行代码呢?里面可是有上百个主页啊!

冷静下来!ASP无法访问,应该是相关的扩展功能出错了!这个念头一闪,笔者立即打开IIS中站点属性的“服务器扩展”项,果然有问题。

IIS500-03.tif

图注 都是没有启用扩展服务惹的祸

     问题找到了!解决就有针对性了:右击网站—“所有任务”—“配置服务器扩展”,如下图。

IIS500-04.tif

图注  打开服务器扩展

然后IIS服务器开始进行“服务器扩展”配置,但过了一会,并没有出现成功的提示,反而是“不能在URL /处创建站点”。

IIS500-05.tif

图注  竟然连执行服务器扩展也要出错

通过在我们单位的一番调查,获知:原来是有个老师用FrontPage做的网页有问题。笔者按上面的提示将那个Services.cnf文件删除,再重新进行一次“服务器扩展配置”,此时站点的“服务器扩展”项不再是空白,而是出现相关的配置项。再打开留言板,终于可以正常访问ASP页面的留言板啦,问题得到了解决!

 

问题的根源

问题是得到了解决,但笔者却在想,为什么会出现这样的问题呢?怎么样才能有效地防止问题的再一次出现?于是,笔者开始在几台DELL4600服务器上折腾起来,同时到微软网站查阅了许多文章,经过几天时间笔者总算大概弄清了问题的来龙去脉。

Windows Server系列的IIS系列都应该是全面支持微软的FrontPage这个网页制作工具的。毕竟是一家子的嘛。只是在安装时略有不同,Windows Server 2000系列会自动安装“FrontPage 服务器扩展”,Windows Server 2003在安装时则必须选择“FrontPage Server Extension”,才能使用服务器扩展功能。

IIS500-07.tif

图注 Windows Server 2003安装IIS的时候默认并不会安装“FrontPage Server Extension

 

不过,笔者建议大家在服务器上安装“SharePoint Team Services”这个软件,它是微软随FrontPage 2002光盘免费附赠的东东(BTW:微软的附赠品有时真的很不错,甚至比它的正式商业版软件还好用,呵呵),其功能比FrontPage扩展要强大得多,性能也更出色,操作也相对容易得多。

 

防患于未然——服务器健康检查

按理说,不论是“Microsoft SharePoint 管理”或“FrontPage 服务器扩展”都应该不会随意出错的,但网站经常会发生变化,从而极有可能导致服务器存在潜在的问题或故障,这样就会造成相关的服务出现问题,从而使出现错误甚至无法访问该网站。因此,网络管理员要时常对服务器进行健康检测,保证网络服务的正常运作。

相关的健康检测在微软技术资料中主要有以下的几种操作:1. 同步数据库;2. 验证 Web 的存在;3.检查角色配置; 4.重新应用文件系统安全性;5. 加强安全; 6. 检查匿名访问。下面,笔者结合上面所碰到的问题来说明一下“验证Web的存在”:

FrontPage制作网页,FrontPage会在用户站点的根目录下创建“自动”地创建以下文件夹与文件:

Services.cnf

其内容为正斜杠 (/),在目录 _vti_pvt 下。

_vti_cnf

文件夹。

_vti_txt

文件夹。全文本搜索索引。

这些文件与文件夹按微软的想法是它们能更好地帮助网站对FrontPage网页进行管理,尤其是Services.cnf这个文件。按微软官方的说法:检测网站时“验证Web的存在”会就主干网上的子网是否存在于文件结构当中这一情况进行验证。它可对位于主干网上的Services.cnf文件进行浏览,以便对应存在的子网有所了解,接着,再对文件系统进行查询,以确定上述子网是否存在。如果相关目录或子网不存在,而您又指明要对此问题进行修复,那么,Services.cnf文件则将得到相应更新,以便对子网不存在或文件夹不是子网这一事实加以反映。这个处理过程将针对主干网上的每个子网以相同的方式分别执行一次。只是要特别说明的是,由于种种原因或问题检测与修复并不一定是有效或成功的!笔者碰到的问题就应该是这种情况吧,FrontPage服务器扩展出错,IIS又无法将其自动修复,于是停止了相关的服务,从而无法访问ASP网页,再现IIS 500错误。如果要彻底解决问题的话,最好的办法是删除相关的Services.cnf文件,或者将相关子网从主干网列表中删除即可。

从上面的说明看来:检测服务器的健康是何等重要!那么如何对服务器进行健康检测呢?可以用命令行方式以及Web方式来进行。

 

     1. 命令行方式

点击“开始”→“运行”,在对话框中输入“CMD”,回车确定,然后在命令行提示符下输入以下指令:

cd \windows\system32\dllcache

然后在提示符>后输入:

owsadm -o check

Owsadm.exe文件放在%systemdir%\system32\dllcache文件夹中。Owsadm.exe的参数相当多且复杂,-o Check参数的作用是即时检查服务器的健康性。

IIS500-06.tif

图注 就这样进行服务器健康检查

Owsadm会检查服务器的健康状态。如果有问题,会给出一份问题列表,因此,网络管理员可以让这条有用的命令在某个特定时间来自动运行检测工作:

Owsadm -o check -schedule “weekly at mon 23:59” -p 80 -m www.yourweb.com

 

2. Web方式

Web方式可以更直观地进行检测。据体操作如下:

点击“开始”菜单,然后依次选择“管理工具”→“Microsoft SharePoint管理器”。输入用户名和密码之后,系统会打开“服务器管理器”。

IIS500-08.tif

图注  打开Microsoft SharePoint管理器

 

然后双击网站名称(图中为“默认网站”),就打开了网站管理页面。点击中间的项目“服务器健全”下的“检查服务器健全”。

IIS500-09.tif

图注 在这里打开“服务器健全”检查工具

 

默认情况下,系统只会检查服务器是否健全,  如果需要让系统自动对有问题的环节进行修复,则必须同时勾选相关的“修复”框。点击确定后,系统会进行检查。如果网站中网页比较多的话会花一些时间,最后出现检查与修复的表格。

IIS500-10.tif

图注  也可以让检查程序自动修复有问题的环节

 

另外,也可以在“IIS管理器”MMC中直接操作,右击网站名称,然后依次选择“所有任务”→“检查Server Extensions 2002

IIS500-11.tif

图注  也可以在IIS管理器中直接打开服务器扩展检查

此时系统会打开服务器管理页面,并直接进入“检查服务器健全”的页面。这样可以更快捷地进行处理相关操作。

 

写在最后

其实,许多时候IIS 500错误本身并不是很难解决的问题,但有时经验并不能完全解决问题,各种各样的怪问题,要求我们网络管理员要从不同的角度与方法去判断与实践。另外,就是发现错误要一抓到底,不轻易放过问题的根源,不怕失败与教训永不放弃,想方设法找到出现的原因与本质,再有的放矢地提出相应的解决思路,从而可以在问题中不断得到提高与进展,或许,这才是本文的最重要的收获吧!希望借此与广大同仁共同商讨,欢迎与本人联系与交流:http://warmrose.126.com

1,448 ° 来自:PC IANA保留地址
上一篇: SysPrep,将“克隆”进行到底
下一篇: “无中生有”也轻松
您可能还喜欢这些:

亲,沙发正空着,还不快来抢?

评论审核已开启 记住我的个人信息 回复后邮件通知我
Back to Top