我正在尝试将经典 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
- 确保您不仅允许对 DLL 的读取访问,还允许其执行权限。
- 授予 IUSR 对整个
HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings
密钥的读取权限