最近,在很多论坛上看到,很多人遇到HTTP 500 - Internal server error 的错误,所以这也就是促使我写这片文章的动力。
这个错误表明服务器设置有问题,而最常出错的是服务器使用的IIS5来运行一个ASP格式的网站。 当访问者访问服务器是,会出现如下错误。
The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.
...
HTTP 500 - Internal server error
Internet Explorer
好,现在让我们打开IIS的设置来看一看
解决这个问题的最简单,方法是将Application Protection 设置为 Low(IIS Process)。
好 ,现在访问一下服务器,已经正常了! ok
虽然,从表面上看,问题似乎已经得到了解决,但是我几乎可以肯定,你的服务器存在其他问题。
那么,为了切入问题的关键,我想先讲讲这三个 Application protection级别的含义
1,Low(IIS Process)
我想用过IIS4.0的人,都知道,在IIS4里有个Default,这个实际上和它代表的意义是一样的。所有的Web页面,包括HTML,HTM,XML以及ASP都运行在一个叫做Inetinfo.exe的进程里。
2,Medium (Pooled)
这是IIS5.0的默认设置,相当于IIS4里的separate process. 这是当这个网站被访问时,服务器会启动一个叫dllhost.exe(在IIS4里这个进程叫Mtx.exe)的进程,这个进程是所有ASP和COM组件运行的空间,而且启动这个进程的帐户是一个叫IWAM_MACHINE的用户(这个用户在你安装好IIS被自动加到本地组的)。注意到名称中有个“pool”的字样,这是因为所有的Web站点都会用到这个空间来进行ASP代码的执行。
3,High (Isolated)
选择这个设置,IIS5会让每一个Web站点独享一个独立的Dllhost.exe空间。如果你有3个Web站点,那么当有人访问你全部的站点时,你会在进程里看到4个dllhost.exe进程。 其中有一个是Com+组件启动时,有SYSTEM这个帐户启用的。
总结: 显然,这3个Application protection是在稳定性和服务器消耗之间平衡关系的一种调节。 注意到Medium (Pooled),运行在dllhost.exe进程里,我们可以知道,它需要COM+组件为其运行提供后台支持!
好了,现在我们已经了解了这3个Application protection级别的含义。记得刚才我说“你的服务器还存在问题吧”, 是的,的确。 你的IIS现在不可以设置成Medium (Pooled)和High (Isolated),证明你的COM组件存在问题,你要重新安装“组件服务”,方法如下:
1,From the Start menu, point to Settings , click Control Panel , and then click Add/Remove Programs .
2,Click Add/Remove Windows Components .
3,Proceed through the wizard, and accept all of the defaults.
4,Restart the computer.
注意,可能会有人在这里找,“Component Service”这个服务,但是你是找不到的。正确的方法是,在出现了下边的画面后,直接点击,next。 不要犹豫,因为这个操作会引导系统重新安装“组件服务”。
完成后,启动计算机,在下次启动后,把IIS里的Application Protection设置为Medium (Pooled)或High (Isolated),打开IE访问服务器,好了现在一切正常了!
当然出现HTTP 500 - Internal server error 错误,还有很多原因,只不过这个是比较普遍的,而且一般用户可能一时找不到原因,所以我就写了这片文章,希望能对大家有所帮助。 至于其他原因而导致出现HTTP 500 - Internal server error 错误,我会在以后介绍给大家!
对了,最后提醒大家,千万注意,IIS设置中的script source Access 一定不要打开,这会带来严重的安全问题,因为访问者可以看到你的ASP文件中的内容。