最近有几个学弟在问关于IIS的配置,我一个一个的说很麻烦,并且问题也基本都是那样的,之前自己配置的时候也是出现这样的错误,而上网找了相关的资料对新手来说看得云里雾里的,所以我将这个问题的解决方法整理下,这样大家应该比较容易知道出现问题的原因和解决的原理了。
落伍的朋友大部分都是老鸟,又很多是搞服务器的,所以看到这个也别不屑,我是写给新手看的,呵呵。
这里主要是本地配置IIS环境测试网站,且基本是xp sp2下出现的问题,而真正的服务器上IIS问题也更麻烦更高深。
如果是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创建,这样导致的权限问题
ok了,这把应该是好了吧?
本站网赚论坛 网站建设教程,seo教程,网站推广,网赚教程 用户交流群QQ:500人超级群:142791698 200人高级群:36121207
本日志由 eben 于 2011-12-13 11:51:29 发表,目前已经被浏览 401 次,评论 0 次;
引用通告:http://www.hacvk.com/Article/99/Trackback.ashx
已经测试 可以使用
感觉我的还好啊
不错 很有见解
互联网行业还是有出路的啊
过来看看博主,求密码,O(∩_∩)O哈哈~
每次路过市政府的时候看到旁边挂着的大牌子上面写着“发展才是硬
嘿嘿 我以前是用这个做idc的 后来还是做博客了 IDC转至tengmu.ne
啊哈~这儿的老路都是随山走的~ 话说上次我从hostloc点过来的时候
博客交换友情链接~http://www.no1vps.com 有兴趣邮件我~~混主机
Powered by Bitrac,天明博客 交换链接 请联系站长 QQ:13571223
360网站安全检测平台
.