<< 电脑文件被删并且清空了回收站怎么找回企业网站建设为什么需要手机APP客户端-手机网站 >>

.XP IIS 无法解析asp文件解决方法

近日有朋友让我帮忙调个程序,是asp.net的,装了iis后却怎么也打不开asp页面,查了很多资料,花了一个多小时终于解决问题,现将一些记录在此,以备下次再用时续查。

ps:iis在有些时候很快就配好了,但有时出现的问题很让人摸不着头脑,有同学说有时操作系统与iis的版本不同可能会带来此影响~若出现问题,看看此日志还是不错的:-)

装好iis后,打开localhost的页面,出现的是:““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.” 也不知道这是什么原因,于是到管理工具里的事件查看器里查看系统的事件日志,发现了问题所在“服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别'。 ”,在google搜到相关文章,按上面的解决方法一步步地进行,终于在过程中发现是一个需要用到的服务被禁掉了,DTC服务,把它打开后,再进行网页上介绍的操作,发现现在日志查看器里的错误变了:“服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '不支持此接口 '。 ”再到网上查此错误,继续运行一些操作,最终解决问题。


 

另外可能会出现DTC服务无法启动:

Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止 解决办法 收藏错误描述:今天在打开一个COM+应用程序时报错,后我通过事件查看器查看系统日志时,发现在有个错误“Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止。” 解决办法:运行"msdtc -resetlog",再启动"Distributed Transaction Coordinator "服务。


得抓紧时间复习了,这次的经过就如此简略地记一下吧~~

过程中遇到的问题列表如下:
服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别'。
asptxn.dll中的DllRegisterServer失败 返回代码是0x8004e00f
http/1.1 500 server error
this script does not work with wscript
服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '不支持此接口 '。
……

主要参考的文章:
http://blog.csdn.net/zhijixp/archive/2008/06/11/2535499.aspx
原文引录:

IIS500错误,是因为微软的一个BUG所造成的。下面是解决办法:

主要是由于IWAM账号(在我的计算机即是IWAM_MYSERVER账号)的密码错误造成了HTTP 500内部错误。

在详细分析HTTP500内部错误产生的原因之前,先对IWAM账号进行一下简要的介绍:IWAM账号是安装IIS5时系统自动建立的一个内置账号,主要用于启动进程之外的应用程序的Internet信息服务。IWAM账号的名字会根据每台计算机NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由“IWAM”前缀、连接线“_”加上计算机的NETBIOS名字组成。我的计算机的NETBIOS名字是MYSERVER,因此我的计算机上IWAM账号的名字就是IWAM_MYSERVER,这一点与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内部错误就这样产生了。

解决办法

手工同步账号

知道了导致HTTP 500内部错误的原因,解决起来就比较简单了,那就是人工同步IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序中的密码。

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


(一)更改Active Directory中IWAM_MYSERVER账号的密码

因IWAM账号的密码由系统控制,随机产生,我们并不知道是什么,为完成下面两步的密码同步工作,我们必须将IWAM账号的密码设置为一个我们知道的值。

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

2、单击“user”,选中右面的“IWAM_MYSERVER”,右击选择“重设密码(T)...”,在跳出的重设密码对方框中给IWAM_MYSERVER设置新的密码,这儿我们设置成“Aboutnt2001”(没有引号的),确定,等待密码修改成功。


(二)同步IIS metabase中IWAM_MYSERVER账号的密码

可能因为这项改动太敏感和重要,微软并没有为我们修改IIS metabase中IWAM_MYSERVER账号密码提供一个显式的用户接口,只随IIS5提供了一个管理脚本adsutil.vbs,这个脚本位于C:\\inetpub\\adminscripts子目录下(位置可能会因你安装IIS5时设置的不同而有所变动)。

adsutil.vbs脚本功能强大,参数非常多且用法复杂,这里只提供使用这个脚本修改IWAM_MYSERVER账号密码的方法:

adsutil SET w3svc/WAMUserPass Password

"Password"参数就是要设置的IWAM账号的新的密码。因此我们将IIS metabase中IWAM_MYSERVER账号的密码修改为“Aboutnt2001”的命令就是:

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

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

WAMUserPass: (String) "Aboutnt2001"


(三)同步COM+应用程序所用的IWAM_MYSERVER的密码

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


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

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

(2)找到“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”->“Out-Of-Process Pooled Applications”,右击“Out-Of-Process Pooled Applications”->“属性”。

(3)切换到“Out-Of-Process Pooled Applications”属性对话框的“标志”选项卡。“此应用程序在下列账户下运行”选择中“此用户”会被选中,用户名是“IWAM_MYSERVER”。这些都是缺省的,不必改动。在下面的“密码”和“确认密码”文本框内输入正确的密码“Aboutnt2001”,确定退出。

(4)系统如果提示“应用程序被一个以上的外部产品创建。你确定要被这些产品支持吗?”时确定即可。

(5)如果我们在IIS中将其它一些Web的“应用程序保护”设置为“高(独立的)”,那么这个WEB所使用的COM+应用程序的IWAM账号密码也需要同步。重复(1)-(4)步,同步其它相应Out of process application的IWAM账号密码。



COM+没有Out-Of-Process Pooled Applications或者没有三个 IIS COM+ 应用程序

1、打开命令提示窗口,然后使用以下命令切换目录:
cd %windir%/system32/inetsrv

2、运行以下命令:
rundll32 wamreg.dll, CreateIISPackage(注意:必须准确键入"CreateIISPackage";它区分大小写)
regsvr32 asptxn.dll

3、关闭并重新打开"组件服务"。您应看到已经重新创建的所有这三个 IIS COM+ 应用程序。

4、从命令行运行 IISRESET,并对先前未正确加载的任意 ASP 页进行测试



新的错误提示如下

asptxn.dll中的dllregisterserver失败。返回代码是:0x8004e00f
据说是有个msdtc的服务没有安装。
只好先安装了,按照再继续重复2操作。结果成功解决问题!

4、成功解决问题的办法
总结所做的:
msdtc -install
msdtc -resetlog
cd %windir%\system32\inetsrv
rundll32 wamreg.dll, CreateIISPackage
regsvr32 asptxn.dll
大功告成
关于0x8004e00f错误~~~~~~~~~~~~
打开"COM+应用程序"时弹出错误对话框,报告8004EOOF错误。这是msdtc服务没有正常启动。
直接从第二步开始也可以
Step1 删除注册表中的键:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSDTC
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTC
HKEY_CLASSES_ROOTCID
Step2 停止MSDTC服务:net stop msdtc
Step3 卸载MSDTC服务:msdtc -uninstall
Step4 重新安装MSDTC服务:msdtc -install

 

2013-4-23 15:34:34 | 发布:ntsem | 分类:电脑常识荟萃 | 评论:0 | 引用:0 | 浏览:
Auto Publisher Copyright 2008-2010 苏ICP备09044516号
点击发起会话
时间:7:30-18:00
  • 域名空间基础
  • 网站建设服务
  • 网站优化推广