我已经在我的工作站上安装了IIS7并启用了IIS6兼容性,因此我可以测试经典的asp页面(对于工作中的一些旧项目)。
有些网页有效,但有些网页没有。
我收到:
Serverobject error 'ASP 0177 : 800401f3'
Server.CreateObject failed
/master.central.be/master_connection.asp, line 55
800401f3
在那条线上我得到了:
Set dicTalenLabels = Server.CreateObject("Scripting.Dictionary")
任何人都有一些想法解决这个问题吗?
编辑:
正如Michael Pryor所建议的那样,我运行了一个类似代码的vbscript并且它已经成功了。所以它可能有一些权限。目前正试图弄清楚哪些文件......
我是否需要将IUSR添加到scrrun.dll?尝试时,虽然我是管理员,但我没有获得许可。
答案 0 :(得分:4)
编辑:他正在运行32位vista,所以它肯定不是64位问题。
制作一个test.vbs文件并将其放入其中
Dim o:设置o = CreateObject(“Scripting.Dictionary”)
然后像这样运行
cscript.exe test.vbs
它会给你同样的错误吗?
如果确实如此,则regsvr32失败或者它通常会放入注册表中的注册表项出现问题。
如果它没有失败,那么运行你的asp页面的用户(默认情况下是IUSR_machinename)可能没有它所需的任何注册表项或实际的.dll
的权限。答案 1 :(得分:2)
0x800401f3表示“Scripting.Dictionary”不正确或未找到。 Scripting.FileSystemObject由同一个dll文件提供,我知道有些主机通过取消注册dll文件来禁用它,这也会禁用Dictionary对象。你能检查一下Scripting.FileSystemObject是否有效吗?
两个对象都是由Windows \ System32 \ scrrun.dll(如果您在64位主机上执行32位,则为Windows \ SysWOW64 \ scrrun.dll)提供的。检查此文件的权限,并验证您的asp脚本执行的权限。
答案 2 :(得分:0)
看看:
这两个链接都来自Bill Staples的博客,他是IIS方面的主要人物之一,第一个链接中的提示将我排除在外,当时我试图让Classic ASP启动并运行。
答案 3 :(得分:0)
我发现对
之类的系统对象的调用set rs = server.createobject("adodb.recordset")
和
set fs = server.createobject("scripting.filesystemobject");
有时在生产服务器上运行数周后会失败。这不是一个很好的解决方案,但是手动回收应用程序池可以解决此问题。另外,将应用程序池设置为每隔几个小时循环一次是保持更新的一种方法。只要确保您不会意外注销所有人(如果使用会话获取凭据)即可。
开发人员可能忘记了“关闭”对象并将其“设置为空”。使用“ set”创建的任何对象都需要通过使用后设置为空进行处理。
set rs = server.createobject("adodb.recordset")
rs.open sql, db, 1, 3 ' adOpenKeyset, adLockOptimistic
' some process here
rs.close
set rs = nothing