找回密码
 注册
首页 ≡≡网络技术≡≡ 服务器 IIS出现Server Application Error错误的解决办法总结 ...

IIS出现Server Application Error错误的解决办法总结

灰儿 2008-7-9 11:41:26
运行IIS时出现如下问题,怎么解决?
Server Application Error
The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.

解决办法:
出现IIS 500内部错误的原因有多个,但最主要的原因是IWAM_MACHINE账号在Active Directory(或SAM),IIS的metabase数据库与COM+组件中的密码不匹配不同步造成的.因此解决问题的关键在于使这三方的密码同步起来。

具体操作:操作分三步,均需要以管理员身份登录计算机以提供足够的操作权限。
1.在本地账号管理器中更改IWAM_MACHINE账号的密码.(即启动IIS进程帐号)
2.使用新的密码重设IIS Metabase数据库.(即编辑匿名访问使用的用户帐号)
3.同步COM+应用程序账号密码

方法1:—操作篇
(一)更改IWAM_MACHINE账号的密码
1、选择“开始”->“程序”->“管理工具”->"计算机管理"->"本地用户和组"->"用户" 选中右面的“IWAM_MACHINE 右键选择"设置密码" 这里我们设置成test
-------------------------------------------------------------------------------------------------------
(二)使用新的密码重设IIS Metabase数据库.(即编辑匿名访问使用的用户帐号)
选择"默认Web 站点 属性"->目录安全性标签->编辑"匿名访问和验证控制"->在弹出的框中选中匿名访问,单击编辑按钮->用户名浏览,选择IWAM_MACHINE,密码框中输入test,选中"允许IIS控制密码"->确定。如果弹出对话框:"非本地用户帐号不支持密码同步。您真要继续?"确定即可。确定关闭所有对话框。
--------------------------------------------------------------------------------------------------------
(三)同步com+应用程序所用的IWAM_MACHINE的密码
使用组件服务mmc管理单元
  (1)启动组件服务管理单元:选择“开始”->“运行”->“mmc”,启动管理控制台,打开“添加/删除管理单元”对话框,将“组件服务”管理单元添加上。
  (2)找到“组件服务”->“计算机”->“我的电脑”->“com+应用程序”->“out-of-process pooled applications”,右击“out-of-process pooled applications”->“属性”。
  (3)切换到“out-of-process pooled applications”属性对话框的“标识”选项卡。选择“此用户”,浏览,选择用户名“IWAM_MACHINE”。这些都是缺省的。在下面的“密码”和“确认密码”文本框内输入正确的密码“test”,确定退出。   
  (4)系统如果提示“应用程序被一个以上的外部产品创建。你确定要被这些产品支持吗?”时确定即可。   
  (5)如果我们在iis中将其它一些web的“应用程序保护”设置为“高(独立的)”,那么这个web所使用的com+应用程序的iwam账号密码也需要同步。
------------------------------------------------------------------------------------------------------
好了,到现在为止,IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序三处的密码已经同步成功,你的ASP程序又可以运行了!

方法2: —脚本篇
(一)更改IWAM_MACHINE账号的密码
在CMD下执行以下命令:
cd c:\inetpub\adminscripts
切换到 c:\inetpub\adminscripts> 目录,
输入
adsutil.vbs set w3svc/anonymoususerpass "123456"
或:
cscript.exe adsutil.vbs set w3svc/anonymoususerpass "123456"
-----------------------------------------------------------------------------------------------------
(二)使用新的密码重设IIS Metabase数据库.
我们需要使用IIS自带的管理脚本adsutil.运行如下的命令:
adsutil set w3svc/wamuserpass "123456"
或:
cscript.exe adsutil.vbs set w3svc/wamuserpass "123456"
系统会显示:
WAMUserPass: (String) "******"
提示密码更新成功.
-----------------------------------------------------------------------------------------------------
(三)同步com+应用程序所用的IWAM_MACHINE的密码
我们要用到IIS的管理脚本synciwam.vbs,这个脚本通常会存在于c:\inetpub\adminscripts下,上一个管理脚本也在这儿放着.(位置可能会因你安装IIS5时设置的不同而有所变动)。
命令如下:
cscript.exe c:\inetpub\adminscripts\synciwam.vbs -v
-v参数是打开详细模式,让我们看到更新的过程,通常会如下显示:
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2000。保留所有权利。
WamUserName:IWAM_xxxxx
WamUserPass:test
IIS Applications Defined:
Name, AppIsolated, Package ID
w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}
Root, 2,
IISHelp, 2,
IISAdmin, 2,
IISSamples, 2,
MSADC, 2,
ROOT, 2,
IISAdmin, 2,
IISHelp, 2,
Root, 2,
Root, 2,
Out of process applications defined:
Count: 1
{3D14228D-FBE1-11d0-995D-00C04FD919C1}
Updating Applications:
Name: IIS Out-Of-Process Pooled Applications Key: {3D14228D-FBE1-11D0-
995D-00C04FD919C1}
密码同步成功.如果不成功先看一下这个脚本取的IIS的密码正确不正确,如果不正确请重复第二步同步IIS密码.
好了,到现在为止,IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序三处的密码已经同步成功,你的ASP程序又可以运行了!

按以上的操作大多数用户都可以了,如果出现“8004e00f”的错误,此错误是MSDTC服务不正常造成的,
解决方法:
首先进入组件服务,查看组件服务/计算机/我的电脑/COM+应用程序,结果报错“COM+ 无法与 Microsoft 分布式事务协调程序交谈”,无法查看里面的对象。
2、进入事件查看器,发现msdtc服务没有正常启动。
3、删除注册表中的键:
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
• HKEY_CLASSES_ROOT\CID
4、停止MSDTC服务:net stop msdtc
5、卸载MSDTC服务:msdtc -uninstall
6、重新安装MSDTC服务:msdtc -install
7、确认在事件查看器中msdtc服务已经正常启动[这步很关键,如果没有,重新启动下电脑看看]
8、重复以上解决方法一到三步,即同步三方的密码。

如果按以上的操作,没有了8004e00f的错误提示,可是访问页面是“Server Application Error” 错误依旧存在,一般是“组件服务”中的“COM+应用程序”中,没有“IIS Out-Of-Process Pooled Applications ”应用程序造成的。
解决方法如下:
一、
检查你的DTC服务(全名:Distributed Transaction Coordinator)是否可以正常启动,
如果正常的话请你跳过此步骤;如果出错,无法正常启动,请在开始菜单的运行中 运行:msdtc -resetlog  以创建日志文件。重起机器,检查IIS是否可以正常使用,若不行继续。
二、
开始菜单->运行->cmd打开命令提示窗口
输入cd %windir%/system32/inetsrv切换到system32下inetsrv目录
输入rundll32 wamreg.dll, CreateIISPackage
注意:必须准确键入"CreateIISPackage"它区分大小写
输入regsvr32 asptxn.dll
关闭并重新打开“组件服务”中的“COM+应用程序”,出现“IIS Out-Of-Process Pooled Applications ”应用程序,问题解决。

其实"COM+ 无法与 Microsoft 分布式事务协调程序交谈"在安装了Windows组件中的消息队列后,就不会出现这个错误了,同时"消息队列"组件又对服务中的"Distributed Transaction Coordinator"(即msdtc服务)有依存关系,这个服务必须启用,才可以安装消息队列组件!消息队列装好后,上图中的COM+应用程序菜单就可以打开了,表示其已正常工作!如果在这个时候再装IIS或者把IIS卸载重装,就不需要上面的手动密码同步问题了!就是说按这个步骤安装好IIS,就已经正常了!实际上,手工同步密码

[ 本帖最后由 灰儿 于 2008-7-9 13:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。