刚才已经讲了怎样安装IIS了,接下来就说说安装好之后会出现500错误的原因和解决的办法。
如果是IIS本身的错误一般就显示为500错误,而如果你的程序本身有问题那么显示的会是500.xx的错误,如果你的程序本身有错误那么本文将不能为你解答了,当然你也可以对照下面看你是不是也存在下面的问题。
之所以会出现IIS500错误的原因现今发现的大部分是因为帐号不同步的原因,可以通过下面的方法解决:
当然,这个解决方法不是我原创的,网上可以找到很多类似的解决方法,但是很多文章都写得不详细,步骤也很混乱,有些也没有说明白原理,我之前找了很多文章看了之后还是没有配置还,也不知道到底是哪里没有弄好。所以我整理的写了这个,算是我个人的经验。
(在开始之前,先需要确保你登录的帐号有管理权限,即计算机的管理员帐号。并且我建议你先看完整个文章再着手做修改,因为我会在后面讲解每个步骤的原理。)


1,首先,我们依次打开“控制面板”——(“性能和维护”)——“管理工具”——“计算机管理”中,“系统工具”->“本地用户和组”->“用户”里面,找到一个个IWAM_MACHINE帐号。(这里的MACHINE是你的计算机名,每个人的一般都不同),右键更改密码,如改成“123456”。

2,按第一步方法进本地用户和组管理,确定IWAM_MACHINE用户只在GUEST组内,再在“本地用户和组”->“组”里面,右键点击Users组属性,添加进NT AUTHORITY\Authenticated Users和NT AUTHORITY\Interactive两个用户成员,确定。

3,在C:\Inetpub\AdminScripts目录下找到adsutil.vbs,用记事本打开此文件
查找 issecureproperty = true ,将 issecureproperty = true 改为 issecureproperty = false,然后保存。

4,用win+r打开“运行”对话框,输入“cmd”回车进入命令提示符。然后将目录切换到IIS提供的内置脚本的目录,即C:\Inetpub\AdminScripts。(不知道打命令的朋友请输入:cd C:\Inetpub\AdminScripts),然后输入下面的命令:

adsutil.vbs SET w3svc/WAMUserPass "123456"

会得到如下的提示:
wamuserpass: (string) "123456"

5,在未关闭的命令提示符狂口中再次输入(如关闭了需要重新将路径改过去):

cscript synciwam.vbs -v

会出来一大堆的字符,不用管,完成了之后exit。

现在打开你的asp程序看,是不是可以正常浏览了。
下面说明下上面的每一步在干什么,为什么要做上面的那几步。

首先说明下IWAM是什么。它是安装IIS时系统自动建立的一个内置账号,主要用于启动进程之外的应用程序的Internet信息服务。IWAM账号的名字会根据每台计算机NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由“IWAM”前缀、连接线“_”加上计算机的NETBIOS名字组成。如我的计算机的NETBIOS名字是IVERSHUO,因此我的计算机上IWAM账号的名字就是IWAM_IVERSHUO,这一点与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内部错误就这样产生了。
于是,我们要做的就是将这三方的密码同步起来。
上面的第一步是自己指定一个密码,因为IIS生成的密码是一个长的杂乱随机的字符串不便于后面的修改。
第二步一般不用设置,因为很多情况下默认已经是这样的了,如果不是请照着设置;
第三步不是必须的,只是为了使后面显示密码的时候显示出来的是明码而不是“***”这样的字符串;
第四步,同步IIS metabase的密码,因为有第三步我们可以看到得到密码是否修改成功;
第五步,同步COM+应用程序所用的IWAM_MYSERVER的密码。注意,这步必须在第四步完成的基础上来做。

同时,上面的第五步也可以这样做:
依次打开“控制面板”——(“性能和维护”)——“管理工具”——“组件服务”,在左边选择“控制台根目录”——“组件服务”——“计算机”——“我的电脑”——“COM+应用程序”, 然后在右边框里点右键“IIS Out-Of-Process Pooled Applications ”,选择“属性”,点“标识”选项卡,然后会看到IWAM_IVERSHUO这个用户嘛,你知道怎么做了,呵呵。
如果报错无法进com+控制台(错误代码8004E00F-COM+无法与Microsoft分布式事务协调程序),
在开始程序运行:

msdtc -resetlog

“COM+应用程序”里正常要有的应用程序一般为8个对象,如果没有IIS****项目则在控制面板/组件里重新安装IIS就会解决(这种情况大部分是因为IIS安装包的问题,可以使用我在上一篇文章中提供的IIS包再次安装看,再次提示:注意版本!)。
COM+ Explorer
COM+ QC Dead Letter Queue Listener
COM+ Utilities
IIS In-Process Applications
IIS Out-Of-Process Pooled Applications
IIS Utilities
MS Software Shadow Copy Provider
System Application

但是很多朋友这样做了之后还是出现了asp程序无法正常工作的情况,主要表现在不涉及到数据库的操作都能做,但是涉及到数据库的就会报错(典型的会报错为:“数据库连接出错,请检查连接字串!”),而仔细检查了数据库连接并没有错误,或者上传到了服务器一切正常,但是在本机就出现数据库无法连接,这是什么原因呢?
这种情况一般出现在系统所在的盘其文件格式为ntfs
那么,你就要进行下面的操作了,很简单,但是很关键:

打开系统盘下windows文件夹在temp文件夹上右键,属性,选择“安全”看列出来的用户里面有没有MACHINE/IUSR_MACHINE(MACHINE是你的计算机名)这个用户。如有,选到这个用户修改其权限(至少都得有读的权限吧);如没有点击“添加”,在弹出来的对话框下部有个“高级...”按钮,点击它,然后在出来的对话框里点击"立即查找",得到一列用户,将上面提到的MACHINE/IUSR_MACHINE选择,确定,返回,修改其权限。

之所以会出现这个情况是因为很多朋友都在用一个清理垃圾的批处理(这个很流行,呵呵,我之前在守望麦田论坛还优化+美化了下这个的,呵呵~)弄的,因为里面有一句
rd /s /q %windir%\temp & md %windir%\temp

将temp文件夹用RD命令删除,再用MD创建,这样导致的权限问题

由于数据库操作时需要使用temp目录作缓存进行数据交换,当权限不足时就出现:“数据库连接出错,请检查连接字串。”的错误提示。
ok了,这把应该是好了吧?

好了,兴奋之后就好好做站吧,呵呵。我也累了,写了一晚上了,主要是天气太热了,坐在床上脖子都疼了,之前自己配置好IIS的时候就想把这个给写出来,一直都懒得写,直到今天才写出来。很多当时很多感想的细节的现在都忘记了,想起来的时候再慢慢加上去,呵呵。
因为这个我是原先自己找的时候在网上找了很多资料然后保存在本地的txt文件中的,所以现出处基本是google了,呵呵~
下面提供几篇参考文章:
http://www.axin.net/article/ShowArticle.asp?ArticleID=529
http://bluethinking.cnblogs.com/archive/2006/06/14/425266.html
http://blog.sina.com.cn/s/reader_55c031f401008jt8.html

IIS配置本就是一个做起来比想像中麻烦得多的事情,时不时的出现莫名其妙的问题,如果大家还有问题可以一起讨论,呵呵。