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