IIS 7'Server.CreateObject失败'

时间:2009-03-12 11:04:44

标签: iis iis-7 asp-classic windows-vista

我已经在我的工作站上安装了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?尝试时,虽然我是管理员,但我没有获得许可。

4 个答案:

答案 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