.dll 是 C:\Windows\System32 中的 ASPCache_x64.dll(我知道;这个决定是在我之前做出的。)
服务器是运行 Windows 7 的主机上的带有 IIS 7.5 的 Windows Server 2008 R2 VirtualBox VM。有问题的网站是在 .NET Framework 2.0 下运行的经典 ASP 站点。VM 本身是我们用作模板的 VM 的副本,使用该机器副本的其他人没有这个问题。
问题:
在加载任何页面时,我收到以下错误:
ERROR IN PROCESSING: ?
ASP Code:
Number: 0
Source:
Line
Number: 0
Description: Create object failed
ASP Description: An error occurred while creating object 'myCache'.
其他信息:
- 最终追溯到 Global.asa
<object>
标签 - 尝试在从桌面文件夹运行的 VBScript 文件中创建和使用 ASPCache 对象工作正常
- 尝试在同一域中的测试 ASP 页面上创建和使用 ASPCache 对象给我同样的错误,直到我刷新页面,此时我收到此错误:
(损坏降价的解决方法;忽略此行)
ERROR IN PROCESSING: /test_createobject.asp
ASP Code:
Number: -2146959359
Source:
Line Number: 4
Description: Cannot create ASPCache object - a required component is missing. Please reinstall your software.
我努力了:
- 下载 VM 的新副本
- 确保 IUSR 对 C:\Windows\Systeme32\ASPCache-x64.dll 具有读取和执行权限
- 使用 regsvr32.exe 取消注册并重新注册 C:\Windows\Systeme32\ASPCache-x64.dll
- 授予对 ASPCache 和 ASPCache.1 注册表项的 IUSR 读取权限
- 应用此处找到的修复:经典 ASP 中的 Server.CreateObject 失败
- 根据我们的共享开发环境检查我能想到的每一个设置,这没有这个问题
- 每次更改后重新启动 IIS
- 完成上述所有操作后重新启动计算机
- 授予单个应用程序池在 C:\Windows\Systeme32\ASPCache-x64.dll 上的读取和执行权限
- 将默认应用程序池标识更改为 NetworkService
- 将默认应用程序池标识更改为 [Machine name]\Administrator
几个月来,我一直在谷歌上搜索这个问题。我发现没有任何帮助。
测试asp页面的代码,不起作用:
<%
Dim testCache
Set testCache = Server.CreateObject("ASPCache")
testCache("Marco") = "Polo"
Response.Write testCache("Marco")
%>
VB 脚本的代码,它确实有效:
Dim testCache
Set testCache = CreateObject("ASPCache")
testCache("Marco") = "Polo"
WScript.echo o("Marco")
Global.asa 中的相关代码,给出了原始错误:
<OBJECT RUNAT=Server SCOPE=Application ID=TestCache PROGID=ASPCache></OBJECT>