使用经典 ASP 在 IIS7 上创建 COM 对象时出现 Server.CreateObject_Failed 错误

使用经典 ASP 在 IIS7 上创建 COM 对象时出现 Server.CreateObject_Failed 错误

我正在尝试将经典 ASP 应用程序从 Windows Server 2003、IIS6 服务器迁移到 Windows 2008、IIS 7 服务器。

ASP 页面显示正常,但第一次尝试使用我们的 .NET 互操作 DLL 时失败,并在 IIS 日志中显示以下错误:

2012-01-06 18:50:41 XXXX POST /downloads.asp |27|ASP_0177_:_8000ffff|Server.CreateObject_Failed 80 - XXXX Mozilla/5.0+(Windows+NT+6.1;+rv:8.0)+Gecko/20100101+Firefox/8.0 500 0 0 0

ASP页面中对应的行是:

设置订阅 = Server.CreateObject(“DLLNAME”)

我使用 RegAsm.exe 成功注册了 DLL,并使用成功调用 CreateObject 的 VBscript 进行了确认。我还确保 NETWORK SERVICE、IUSR_MACHINENAME 和 IUSR 都具有对 DLL 位置和 HKEY_USERS...Internet Settings\Zones 的读取权限。

有什么想法吗?

答案1

如果它可以由 VBScript 运行,那么也许是位数问题?

工作进程可能将 Enable32BitApp 设置为 True,即 32 位,并且从常规 CMD 提示符运行的 VBScript 将与该提示符的位数匹配(除非从 SysWow64 运行,否则为 64 位)。

因此...首先检查位数是否正常。如果正常,请尝试使用 ProcMon 记录应用程序所需的任何内容,并检查事件日志中是否有特定的错误消息。

答案2

  1. 确保您不仅允许对 DLL 的读取访问,还允许其执行权限。
  2. 授予 IUSR 对整个HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings密钥的读取权限

相关内容