问题的出现多是IIS擢爻充种的相关设置出问题。
问题的解决可能由三种方法解决:
吭稿荔徊1,重新安装IIS。如果重新安装IIS都不行,要重新安装WINDOWS2000。
2,对iwam_myserver账号进行更改。
3,使用NetBox软件代替目前的IIS程序,暂时调试ASP先。
建议:
不建议第1种方法。可以试下第2种方法(见下面详细说明);推荐第3种方法,见下面详细说明(请不要在服务器中试用)。
方法简介:
重新安装IIS或者重新安装WINDOW2000的方法就不多说了。
(1)方法之一:对iwam_myserver账号进行更改的说明帮助(其实就是IIS中的500报错问题):
----------------------------------------------------------------------------------------------------------------------
IIS500内部错误解决方法
错误表现:
这个错误发生时总会有三方面的表现:一是IE中的最直接的表现,也是最让人看不懂的表现;二是安全日志中的表现,IWAM_Machine账号登录失败;三是系统日志中的表现,IISOut-Of-ProcessPooledApplications应用程序因启动账号的错误而不能够启动.从而造成ASP页面浏览错误.
(一)IE中的表现
当浏览以前能够正常运行的asp页面时会出现如下的错误:
(1)
网页无法显示
您要访问的网页存在问题,因此无法显示。
---------------------------------------------
请尝试下列操作:
打开http://127.0.0.1主页,寻找指向所需信息的链接。
单击刷新按钮,或者以后重试。
HTTP500-内部服务器错误
Internet信息服务
--------------------------------------------------------------------------------
技术信息(支持个人)
详细信息:
[注意,这儿只是500错误,不是500.xx等错误的,那些错误主要是asp编程问题,与iis没有太大的关系,只有500错误是由iis自身造成的]
(2)
ServerApplicationError
Theserverhasencounteredanerrorwhileloadinganapplicationduringtheprocessingofyourrequest.Pleaserefertotheeventlogformoredetailinformation.Pleasecontacttheserveradministratorforassistance.
在注册表中的表现
提示:sam文件里的IWAM_user不存在
网络上的解决方案如下:
知道了导致http500内部错误的原因,解决起来就比较简单了,那就是人工同步iwam账号在activedirectory、iis
metabase数据库和com+应用程序中的密码。
具体操作分三步,均需要以管理员身份登录计算机以提供足够的操作权限(iwam账号以iwam_myserver为例)。
(一)更改activedirectory中iwam_myserver账号的密码
因iwam账号的密码由系统控制,随机产生,我们并不知道是什么,为完成下面两步的密码同步工作,我们必须将iwam账号的密码设置为一个我们知道的值。
选择“开始”->“程序”->“管理工具”->activedirectory用户和计算机,启动“active
directory用户和计算机”管理单元。
单击“user”,选中右面的“iwam_myserver”,右击选择“重设密码(t)...”,在跳出的重设密码对方框中给iwam_myserver设置新的密码,这儿我们设置成“aboutnt2001”(没有引号的),确定,等待密码修改成功。
(二)同步iismetabase中iwam_myserver账号的密码
可能因为这项改动太敏感和重要,微软并没有为我们修改iis
metabase中iwam_myserver账号密码提供一个显式的用户接口,只随iis5提供了一个管理脚本adsutil.vbs,这个脚本位于c:\inetpub\adminscripts子目录下(位置可能会因你安装iis5时设置的不同而有所变动)。
adsutil.vbs脚本功能强大,参数非常多且用法复杂,这里只提供使用这个脚本修改iwam_myserver账号密码的方法:
adsutilsetw3svc/wamuserpasspassword
password参数就是要设置的iwam账号的新的密码。因此我们将iis
metabase中iwam_myserver账号的密码修改为“aboutnt2001”的命令就是:
c:\inetpub\adminscripts\adsutilsetw3svc/wamuserpassaboutnt2001
修改成功后,系统会有如下提示:
wamuserpass:(string)aboutnt2001
(三)同步com+应用程序所用的iwam_myserver的密码
同步com+应用程序所用的iwam_myserver的密码,我们有两种方式可以选择:一种是使用组件服务mmc管理单元,另一种是使用iwam账号同步脚本synciwam.vbs。
使用组件服务mmc管理单元
(1)启动组件服务管理单元:选择“开始”->“运行”->“mmc”,启动管理控制台,打开“添加/删除管理单元”对话框,将“组件服务”管理单元添加上。
(2)找到“组件服务”->“计算机”->“我的电脑”->“com+应用程序”->“out-of-processpooled
applications”,右击“out-of-processpooledapplications”->“属性”。
(3)切换到“out-of-processpooled
applications”属性对话框的“标志”选项卡。“此应用程序在下列账户下运行”选择中“此用户”会被选中,用户名是“iwam_myserver”。这些都是缺省的,不必改动。在下面的“密码”和“确认密码”文本框内输入正确的密码“aboutnt2001”,确定退出。
(4)系统如果提示“应用程序被一个以上的外部产品创建。你确定要被这些产品支持吗?”时确定即可。
(5)如果我们在iis中将其它一些web的“应用程序保护”设置为“高(独立的)”,那么这个web所使用的com+应用程序的iwam账号密码也需要同步。重复(1)-(4)步,同步其它相应out
ofprocessapplication的iwam账号密码。
使用iwam账号同步脚本synciwam.vbs
实际上微软已经发现iwam账号在密码同步方面存在问题,因此在iis5的管理脚本中单独为iwam账号密码同步编写了一个脚本synciwam.vbs,这个脚本位于c:\inetpub\adminscripts子目录下(位置可能会因你安装iis5时设置的不同而有所变动)。
synciwam.vbs脚本用法比较简单:
cscriptsynciwam.vbs[-v|-h]
“-v”参数表示详细显示脚本执行的整个过程(建议使用),“-h”参数用于显示简单的帮助信息。
我们要同步iwam_myserver账号在com+应用程序中的密码,只需要执行“cscriptsynciwam.vbs
-v”即可,如下:
cscriptc:\inetpub\adminscripts\synciwam.vbs-v
microsoft(r)windowsscripthostversion5.6
版权所有(c)microsoftcorporation1996-2000。保留所有权利。
wamusername:iwam_myserver
wamuserpass:aboutnt2001
iisapplicationsdefined:
name,appisolated,packageid
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,
outofprocessapplicationsdefined:
count:1
3d14228d-fbe1-11d0-995d-00c04fd919c1}
updatingapplications:
name:iisout-of-processpooledapplicationskey:
3d14228d-fbe1-11d0-995d-00c04fd919c1}
从上面脚本的执行情况可以看出,使用synciwam.vbs脚本要比使用组件服务的方法更全面和快捷。它首先从iis的metabase数据库找到iwam账号iwam_myserver并取出对应的密码“aboutnt2001”,然后查找所有已定义的iis
applications和outofprocessapplications,并逐一同步每一个outofprocess
applications应用程序的iwam账号密码。
使用synciwam.vbs脚本时,要注意一个问题,那就是在你运行synciwam.vbs之前,必须保证iis
metabase数据库与activedirectory中的iwam密码已经一致。因为synciwam.vbs脚本是从iis
metabase数据库而不是从activedirectory取得iwam账号的密码,如果iis
metabase中的密码不正确,那synciwam.vbs取得的密码也会不正确,同步操作执行到“updating
applications”系统就会报80110414错误,即“找不到应用程序
3d14228d-fbe1-11d0-995d-00c04fd919c1}”。
好了,到现在为止,iwam账号在activedirectory、iis
metabase数据库和com+应用程序三处的密码已经同步成功,你的asp程序又可以运行了!
修改成功后,系统会有如下提示:
---------------------------------------------------
经过测试,显示应该是
wamuserpass:(string)*******
正确方法:第一,下载IIS5.0安装包,SP4,
第二,备份IIS,卸载掉IIS,然后安装IIS,还原IIS备份,一切OK
(2)方法之二:使用netbox软件:
附netbox软件简介(仅作参考,你可以不管它。)
NetBoxAspWeb服务器是一个简单的服务器程序,功能和windows的IIS几乎一些,如果您的机器无法安装或不支持iis,可以安装这个程序来调试远行.asp文件。
程序几乎含有IIS全部功能(默认为vbscript语页的文件,用上<SCRIPTLANGUAGE="javascript"runat="server">就不支持),但也有IIS没有的功能。
使用NetBox可以方便的将asp应用编译成为独立运行的执行程序,完全摆脱iis的束缚,在几乎所有的Windows版本上面直接运行,完全不需要考虑平台兼容性和对asp运行环境的要求。下面就是快速移植已有的asp应用的步骤。
创建asp运行环境
首先创建一个空的目录,在你喜欢的位置,假设是d:\websvr。在目录中创建一个文件:main.box,编辑其内容为:
Dimhttpd
Shell.Service.RunService"NBWeb","NetBoxWebServer","NetBoxHttpServerSample"
'----------------------ServiceEvent---------------------
SubOnServiceStart()
Sethttpd=CreateObject("NetBox.HttpServer")
Ifhttpd.Create("",80)=0Then
Sethost=httpd.AddHost("","\wwwroot")
host.EnableScript=true
host.AddDefault"default.asp"
host.AddDefault"default.htm"
httpd.Start
else
Shell.Quit0
endif
EndSub
SubOnServiceStop()
httpd.Close
EndSub
SubOnServicePause()
httpd.Stop
EndSub
SubOnServiceResume()
httpd.Start
EndSub
复制asp应用
在目录中再创建一个子目录:wwwroot,将你在iis中的文件全部复制到wwwroot中。此时,你的asp运行环境应该已经准备好了。
测试运行
为了运行你刚才新建的netbox应用,你必须确认你的iis或者其他占用80端口的程序已经停止,较大的可能是你的iis在使用这个端口,所以最好停止你的iis,或者将iis的使用端口更换为其他端口。
在确保iis已经停止后,你便可以执行你的netbox应用了。双击main.box文件,很快,你将在窗口右下角看见netbox的图标。此时,netbox已经正常运行了。你需要做的是使用ie访问http://localhost测试你的asp应用是否也已经正常运行。一般情况下此时asp也已经完全正常运行了。
编译
编译的过程是简单的,执行nbdw.exe。
点SelectFolder,找到刚才我们建立的目录d:\websvr,点Browser,设定要生成的执行文件名,点Build...,开始编译。
最后,我们得到了编译成功的那个执行文件,这个就是我们的最后目标。
因为这个例程是以服务方式创建的Web服务器,所以你可以使用:
myapp-install
将应用安装成为服务,这样,系统无须登录便可以自动运行应用了。如果需要卸载服务,则可以执行下面的命令:
myapp-remove