IIS 7';Server.CreateObject失败';

IIS 7';Server.CreateObject失败';,iis,iis-7,asp-classic,windows-vista,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.C

我已经在我的工作站上安装了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")
有人知道怎么解决这个问题吗

编辑:

正如MichaelPryor所建议的,我已经用类似的代码运行了一个vbscript,它是成功的。因此,它可能需要处理权限问题。目前正在尝试找出确切的文件


是否需要将IUSR添加到scrrun.dll?尝试时,我没有权限,尽管我是管理员。

0x800401f3表示“Scripting.Dictionary”不正确或找不到。Scripting.FileSystemObject是由同一个dll文件提供的,我知道有些主机通过注销dll文件禁用了它,这也会禁用Dictionary对象。您能检查Scripting.FileSystemObject是否工作吗

这两个对象都由Windows\System32\scrun.dll提供(如果您在64位主机上执行32位操作,则由Windows\SysWOW64\scrun.dll提供)。检查此文件的权限,并验证asp脚本执行时的权限。

0x800401f3表示“Scripting.Dictionary”不正确或未找到。Scripting.FileSystemObject是由同一个dll文件提供的,我知道有些主机通过注销dll文件禁用了它,这也会禁用Dictionary对象。您能检查Scripting.FileSystemObject是否工作吗


这两个对象都由Windows\System32\scrun.dll提供(如果您在64位主机上执行32位操作,则由Windows\SysWOW64\scrun.dll提供)。检查此文件的权限,并验证您的asp脚本执行时的权限。

编辑:他运行的是32位vista,因此肯定不是64位问题

制作一个test.vbs文件并将其放入其中

Dim o:Set o=CreateObject(“Scripting.Dictionary”)

然后像这样运行它

cscript.exe test.vbs

它会给你同样的错误吗

如果是这样,那么regsvr32就失败了,或者它通常放在注册表中的注册表项有问题


如果没有失败,很可能是您运行asp页面的用户(默认为IUSR_machinename)对所需的其他注册表项或实际编辑的.dll没有权限:他运行的是32位vista,因此肯定不是64位问题

制作一个test.vbs文件并将其放入其中

Dim o:Set o=CreateObject(“Scripting.Dictionary”)

然后像这样运行它

cscript.exe test.vbs

它会给你同样的错误吗

如果是这样,那么regsvr32就失败了,或者它通常放在注册表中的注册表项有问题

如果没有失败,则可能是您运行asp页面的用户(默认为IUSR_machinename)对所需的其他注册表项或实际的.dll没有权限。请查看:

这两个链接都来自Bill Staples的博客,他是IIS方面的负责人之一,当我试图启动并运行经典ASP时,第一个链接中的提示帮我解决了问题。

看看:


这两个链接都来自Bill Staples的博客,他是IIS方面的负责人之一,当我试图启动并运行经典ASP时,第一个链接中的提示帮我解决了问题。

我发现对系统对象的调用,例如

set rs = server.createobject("adodb.recordset") 

有时在生产服务器上正常运行数周后失败。这不是一个很好的解决方案,但手动回收应用程序池可以修复它。此外,将应用程序池设置为每隔几个小时进行一次回收也是一种保持其新鲜度的方法。只要确保您不会意外地注销所有人(如果使用会话获取凭据)

可能是开发人员忘记了“关闭”对象,而“设置为空”。使用“set”创建的任何对象都需要允许在使用后通过将其设置为“nothing”进行处置

set rs = server.createobject("adodb.recordset")
rs.open sql, db, 1, 3       ' adOpenKeyset, adLockOptimistic
' some process here
rs.close
set rs = nothing

我发现对系统对象的调用

set rs = server.createobject("adodb.recordset") 

有时在生产服务器上正常运行数周后失败。这不是一个很好的解决方案,但手动回收应用程序池可以修复它。此外,将应用程序池设置为每隔几个小时进行一次回收也是一种保持其新鲜度的方法。只要确保您不会意外地注销所有人(如果使用会话获取凭据)

可能是开发人员忘记了“关闭”对象,而“设置为空”。使用“set”创建的任何对象都需要允许在使用后通过将其设置为“nothing”进行处置

set rs = server.createobject("adodb.recordset")
rs.open sql, db, 1, 3       ' adOpenKeyset, adLockOptimistic
' some process here
rs.close
set rs = nothing

没错,Scripting.FileSystemObject也不起作用。我看到列出了用户或组“System”、“Administrators”、“users”、“TrustedInstaller”,你知道我应该添加谁吗?@Sander:你可以尝试在提升的命令提示符下执行“regsvr32 scrrun.dll”吗?我尝试注册dll,但没有帮助,它显示“成功注册了scrrun.dll的DLLRegisterServer”。UAC已禁用。谢谢你的建议顺便说一句。。。更多的建议?@Sander:我没有更多来自不同谷歌搜索结果的建议。如果是权限问题,请将您的匿名用户(IUSR)添加到管理员组。如果在这之后可以使用,请删除成员资格,并使用Process Monitor查找访问哪些文件以及失败的位置。没错,Scripting.FileSystemObject也不起作用。我看到列出了用户或组“System”、“Administrators”、“users”、“TrustedInstaller”,你知道我应该添加谁吗?@Sander:你可以尝试在提升的命令提示符下执行“regsvr32 scrrun.dll”吗?我尝试注册dll,但没有帮助,它显示“成功注册了scrrun.dll的DLLRegisterServer”。UAC已禁用。谢谢你的建议顺便说一句。。。更多的建议?@Sander:我没有更多来自不同谷歌搜索结果的建议。检查是否存在权限问题,将您的匿名用户(IUSR)添加到