iis应用程序中的服务器错误 如何解决iis中的http500内部服务器错误???…

IIS500错误是由微软的一个BUG引起的。 这是解决方案:

主要原因是HTTP 500内部错误是由于IWAM帐户(就是我电脑上的IWAM_MYSERVER帐户)密码错误引起的。

在详细分析HTTP500内部错误的原因之前,我们先简单介绍一下IWAM帐户: IWAM帐户是系统在安装IIS5时自动创建的内置帐户。 它主要用于为进程外的应用程序启动互联网信息服务。 IWAM 帐户的名称将根据每台计算机的 NETBIOS 名称而有所不同。 常见的格式是IWAM_MACHINE,由“IWAM”前缀、连接线“_”和计算机的NETBIOS名称组成。 我的计算机的NETBIOS名称是MYSERVER,所以我的计算机上的IWAM帐户的名称是IWAM_MYSERVER,这与IIS匿名帐户ISUR_MACHINE的命名方法非常相似。

IWAM 帐户建立后,由Active Directory、IIS 元数据库和COM+ 应用程序共同使用。 账户密码由三方分别保存,操作系统负责三方保存的IWAM密码的同步。 按照常理,我们可以放心,操作系统负责工作,不必担心出错。 但无论是bug还是其他原因,系统对IWAM账户的密码同步工作有时会失败,导致三方IWAM账户使用的密码不一致。 当 IIS 或 COM+ 应用程序使用不正确的 IWAM 密码登录系统并启动 IIS 进程外池化应用程序时,系统会因密码不正确而拒绝请求,导致 IIS 进程外池化应用程序无法启动。 我们在 ID10004 错误事件中看到“无法运行服务器 {3D14228D-FBE1-11D0-995D-00C04FD919C1}”(此处 {3D14228D-FBE1-11D0-995D-00C04FD919C1} 是 IIS 进程外池化应用程序的 KEY),无法传输到IIS5应用程序,出现HTTP 500内部错误。

解决方案

手动同步账户

知道了HTTP 500内部错误的原因,解决方案就比较简单了,就是手动同步Active Directory、IIS元数据库和COM+应用程序中IWAM帐户的密码。

具体操作分为三步,需要以管理员身份登录计算机,提供足够的操作权限(以IWAM帐户为IWAM_MYSERVER为例)。

(1)更改Active Directory中IWAM_MYSERVER帐户的密码

由于IWAM账户的密码是由系统控制的,是随机生成的,所以我们不知道它是什么。 为了完成下面两步的密码同步,我们必须将IWAM帐户的密码设置为我们知道的值。

1. 选择“开始”->“程序”->“管理工具”->“Active Directory 用户和计算机”,启动“Active Directory 用户和计算机”管理单元。

2、点击“用户”,选择右侧的“IWAM_MYSERVER”,右键选择“重置密码(T)…”,在弹出的重置密码框中为IWAM_MYSERVER设置新密码。 这里我们设置为“Aboutnt2001”(不带引号),OK,等待密码修改成功。

(2)同步IIS元数据库中IWAM_MYSERVER帐户的密码

也许是因为这个改变太过敏感和重要,微软并没有提供显式的用户界面供我们修改IIS元数据库中的IWAM_MYSERVER帐户密码。 它仅提供带有IIS5的管理脚本adsutil.vbs。 该脚本位于C:inetpub \adminscripts子目录中(由于安装IIS5时的设置不同,位置可能会发生变化)。

adsutil.vbs脚本功能强大,参数较多,使用起来比较复杂。 这里我们只提供使用该脚本修改IWAM_MYSERVER账户密码的方法:

adsutil SET w3svc/WAMUserPass 密码

“Password”参数为要设置的IWAM帐户的新密码。 因此,将IIS元数据库中IWAM_MYSERVER帐户的密码更改为“Aboutnt2001”的命令是:

c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass "Aboutnt2001"

修改成功后,系统会提示如下:

WAMUserPass:(字符串)“Aboutnt2001”

(3) 用于同步COM+应用程序的IWAM_MYSERVER的密码

要同步COM+应用程序使用的IWAM_MYSERVER的密码,我们有两种方法可以选择:一种是使用组件服务MMC管理单元,另一种是使用IWAM帐户同步脚本synciwam.vbs。

1.使用组件服务MMC管理单元

(1)启动组件服务管理单元:选择“开始”->“运行”->“MMC”,启动管理控制台,打开“添加/删除管理单元”对话框,添加“组件服务” ”管理单元。

(2)找到“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”->“进程外池化应用程序”,右键单击“进程外池化应用程序”- >“属性”。

(3) 切换到“进程外池化应用程序”属性对话框的“标志”选项卡。 在“此应用程序在以下帐户下运行”选择中,将选择“此用户”,用户名为“IWAM_MYSERVER”。 这些是默认的,不需要更改。 在下面的“密码”和“确认密码”文本框中输入正确的密码“Aboutnt2001”并确认退出。

(4) 如果系统提示“该应用程序是由多个外部产品创建的,您确定要获得这些产品的支持吗?” 确认一下就可以了

(5)如果我们在IIS中将其他一些Web的“应用程序保护”设置为“高(独立)”,那么该WEB所使用的COM+应用程序的IWAM帐户密码也需要同步。 重复步骤(1)-(4),同步其他相应进程外应用程序的IWAM帐户密码。

2、使用IWAM账户同步脚本synciwam.vbs

事实上,微软已经发现IWAM帐户密码同步存在问题,因此在IIS5管理脚本中单独编写了一个用于IWAM帐户密码同步的脚本synciwam.vbs。 该脚本位于 C:\inetpub\adminscripts 子目录中(该位置可能会根据安装 IIS5 时设置的设置而变化)。

synciwam.vbs脚本的用法比较简单:

cscriptsynciwam.vbs [-v|-h]

“-v”参数表示详细显示脚本执行的整个过程(推荐),“-h”参数用于显示简单的帮助信息。

如果我们想在COM+应用程序中同步IWAM_MYSERVER帐户的密码,只需要执行“cscriptsynciwam.vbs -v”即可,如下:

cscript c:inetpubadminscriptssynciwam.vbs -v

Microsoft (R) Windows 脚本宿主版本 5.6

版权所有 (C) Microsoft Corporation 1996-2000。 版权所有。

Wam用户名:IWAM_MYSERVER

WamUserPass:Aboutnt2001

IIS 应用程序定义:

名称、应用程序隔离、包 ID

w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}

根, 2,

IIS 帮助, 2,

IIS 管理员, 2,

IIS 示例, 2,

MSADC, 2,

根,2,

IIS 管理员, 2,

IIS 帮助, 2,

根, 2,

根, 2,

进程外应用程序定义:

数量:1

{3D14228D-FBE1-11d0-995D-00C04FD919C1}

更新应用程序:

名称:IIS 进程外池应用程序密钥:{3D14228D-FBE1-11D0-995D-00C04FD919C1}

从上面脚本的执行可以看出iis应用程序中的服务器错误,使用synciwam.vbs脚本比使用组件服务更全面、速度更快。 它首先从IIS元数据库中找到IWAM帐户“IWAM_MYSERVER”并检索对应的密码“Aboutnt2001”,然后搜索所有定义的IIS应用程序和进程外应用程序,并一一同步每个进程外应用程序的IWAM帐户。 密码。

使用synciwam.vbs脚本时,需要注意的一件事是,在运行synciwam.vbs之前,必须确保IIS元数据库和Active Directory中的IWAM密码一致。 由于synciwam.vbs脚本是从IIS元数据库而不是Active Directory中获取IWAM帐户的密码,因此如果IIS元数据库中的密码不正确,synciwam.vbs获取到的密码也会不正确,同步操作也会失败执行到“更新应用程序”系统会报80110414错误,即“找不到应用程序{3D14228D-FBE1-11D0-995D-00C04FD919C1}”。

批量同步

您可以使用一些 BAT 来修复此类 IE 问题。

好了,至此,Active Directory、IIS 元数据库和 COM+ 应用程序中 IWAM 帐户的密码已成功同步,您的 ASP 程序可以再次运行了!

复制以下语句并将其粘贴到文本文件中。 然后将文本文件另存为扩展名为 .BAT 的文件。 例如:ie.bat。 双击打开 BAT 文件。 确保一步一步走到最后。 问题将会得到解决。 。

IE浏览器

rem =====通道 7 批处理开始========

rundll32.exe /s advpack.dll /DelNodeRunDLL32 C:\WINNT\System32\dacui.dll

rundll32.exe /s advpack.dll /DelNodeRunDLL32 C:\WINNT\Catroot\icatalog.mdb

regsvr32 /s setupwbv.dll

regsvr32 /s wininet.dll

regsvr32/scomcat.dll

regsvr32 /s shdoc401.dll

regsvr32 /s shdoc401.dll /i

regsvr32 /s asctrls.ocx

regsvr32 /s oleaut32.dll

regsvr32 /s shdocvw.dll /I

regsvr32 /s shdocvw.dll

regsvr32 /s browserui.dll

regsvr32 /s browserui.dll /I

regsvr32 /s msRating.dll

regsvr32 /s mlang.dll

regsvr32 /s hlink.dll

regsvr32/smshtml.dll

regsvr32 /s mshtmled.dll

regsvr32 /s urlmon.dll

regsvr32 /s 插件.ocx

regsvr32 /s sendmail.dll

regsvr32 /s comctl32.dll /i

regsvr32 /s inetcpl.cpl /i

regsvr32 /s mshtml.dll /i

regsvr32 /sscrobj.dll

regsvr32 /s mmefxe.ocx

regsvr32 /s proctexe.ocx mshta.exe /注册

regsvr32/scorpol.dll

regsvr32 /s jscript.dll

regsvr32 /s msxml.dll

regsvr32 /s imgutil.dll

regsvr32 /s 拇指vw.dll

regsvr32 /scryptext.dll

regsvr32 /srsabase.dll

regsvr32 /s Tryit.dll

regsvr32 /s dhtmled.ocx

regsvr32/sinseng.dll

regsvr32 /s iesetup.dll /i

regsvr32 /s hmmapi.dll

regsvr32 /s cryptdlg.dll

regsvr32 /s actxprxy.dll

regsvr32 /sdispex.dll

regsvr32 /s occache.dll

regsvr32 /s occache.dll /i

regsvr32 /s iepeers.dll

regsvr32 /s wininet.dll /i

regsvr32 /s urlmon.dll /i

regsvr32 /s 摘要.dll /i

regsvr32 /s cdfview.dll

regsvr32 /s webcheck.dll

regsvr32 /s mobsync.dll

regsvr32 /s pngfilt.dll

regsvr32 /s licmgr10.dll

regsvr32 /s icmfilter.dll

regsvr32 /s hhctrl.ocx

regsvr32 /s inetcfg.dll

regsvr32 /s triloc.dll

regsvr32 /s tdc.ocx

regsvr32 /sMSR2C.DLL

regsvr32 /s msident.dll

regsvr32 /s msieftp.dll

regsvr32 /s xmsconf.ocx

regsvr32/sils.dll

regsvr32 /s msoeacct.dll

regsvr32 /s wab32.dll

regsvr32 /s wabimp.dll

regsvr32 /s wabfind.dll

regsvr32 /s oemiglib.dll

regsvr32 /s directdb.dll

regsvr32 /s inetcomm.dll

regsvr32 /s msoe.dll

regsvr32 /s oeimport.dll

regsvr32 /s msdxm.ocx

regsvr32 /s dxmasf.dll

regsvr32/slaprxy.dll

regsvr32 /s l3codecx.ax

regsvr32 /s acelpdec.ax

regsvr32 /s mpg4ds32.ax

regsvr32 /s voxmsdec.ax

regsvr32/sdanim.dll

regsvr32 /s Daxctle.ocx

regsvr32 /s lmrt.dll

regsvr32 /s 日期时间.dll

regsvr32 /s dxtrans.dll

regsvr32 /s dxtmsft.dll

regsvr32 /s vgx.dll

regsvr32 /s WEBPOST.DLL

regsvr32 /s WPWIZDLL.DLL

regsvr32 /s POSTWPP.DLL

regsvr32 /s CRSWPP.DLL

regsvr32 /s FTPWPP.DLL

regsvr32 /s FPWPP.DLL

regsvr32 /s FLUPL.OCX

regsvr32 /s wshom.ocx

regsvr32 /s wshext.dll

regsvr32 /s vbscript.dll

regsvr32 /s scrrun.dll mstinit.exe /setup

regsvr32 /s msnsspc.dll /SspcCreateSspiReg

regsvr32 /s msapsspc.dll /SspcCreateSspiReg

rem =====批处理结束========

其他:

前面一切都很顺利,但是在“开始”->“设置”->“控制面板”->“管理工具”->“组件服务”,“控制台根目录”

目录”->“组件服务”->“计算机”-

>“我的电脑”->“COM+应用程序”,右键启动IIS Out-Of-Process Pooled Applications,发现还是

报错,无法重启IIS,发现问题现象

还是一样,检查上面第三步。 输入csriptsynciwam.vbs -v命令后,返回的脚本执行状态最后一步为

该段有一条错误消息。一段英文,带有

文字描述无法保存,这意味着:IIS的原始数据库被拒绝访问。

4、无奈之下,我删除了IIS组件包,重新创建iis应用程序中的服务器错误,还是不行。

这时又出现了一个问题。

查看应用日志和系统日志,发现错误事件ID号依然是:10010、36、4205

上述三步中,前两步应该没问题,但最后一步似乎有些问题。

根据事件ID号,查找相关信息,找到解决方案如下:

在“开始”->“设置”->“控制面板”->“管理工具”->“计算机管理”、“系统工具”->“本地用户”

和组”->“用户”,确认 IWAM_My

服务器用户只在GUEST组中,然后在“本地用户和组”->“组”中,右键单击Users组属性,将其添加到NT中

AUTHORITY\经过身份验证的用户和 NT

AUTHORITY\交互两个用户成员,OK。

重复第三步,即在IIS安装的默认目录中输入:c:inetpubadminscripts>csriptsynciwam.vbs -v

检查返回脚本的执行状态。 最后一段中的错误消失了。 将 COM+ 程序的用户更改回 IWAM 用户。

,进程外重新启动IIS

池化应用程序应用程序不再报告错误。 重新启动 IIS 并检查所有 WEB 站点服务。 故障已解决!

也就是说,正是在这一步,IIS下的ASP程序才正式恢复并重新启动。

至此,所有故障症状均已消除!

因此,需要注意以下几点:

1. 事件日志的空间设置稍微放大。 默认仅为 512K。 根据硬盘空间,适当放大,避免日志文件满的情况;

2. 不要轻易清除事件日志中的事件记录。 很多故障现象都需要从这个原因来查找;

3、所有返回的系统提示必须仔细检查;

4. IIS 中的应用程序保护应为中或高。 如果较低,所有 ASP 页面都将以本地系统权限运行,并且会出现安全问题。

5、COM+程序的用户权限和用户启动权限非常重要,应仔细检查。

6、系统默认组有时起着重要作用,不能轻易删除或修改。

7、重要的系统文件(如SAM)不能轻易删除,应尽可能采取适当的解决方案。 例如,使用外部程序修改注册表或SAM表信息以获得管理员权限。 不要删除该文件。

通过这个问题,我偶尔发现了一些看似复杂、难以置信的问题。 只要动动脑子,仔细检查分析,然后在网上找一些相关的文章进行比较——但不要死板套用——就能找到自己问题的答案。 找到根本原因,找到相应的解决办法,问题最终就会得到解决。

© 版权声明
THE END
喜欢就支持一下吧
点赞89赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容