4

我的最后一个问题之后,有人知道我如何在 Classic ASP 的应用程序范围内使用字典对象吗?您不能使用Scripting.Dictionary - 如果您尝试,您将看到类似于以下内容:

Application object error 'ASP 0197 : 80004005'
Disallowed object use /xxx.asp, line 2. Cannot add object with apartment model behavior to the application intrinsic object.

我在 (good ol') 4GuysFromRolla 上找到了这篇文章,但它指向Microsoft 的免费 Lookup 组件Caprock Consulting 的免费 Dictionary 组件——两者都是死链接。

这篇文章清楚地解释了为什么不能在应用程序范围内使用Scripting.Dictionary,但我想知道是否有人知道免费的替代方案,或者我可以在哪里找到 4GuysFromRolla 提到的旧组件的副本?

4

3 回答 3

3

我可以使用以下链接从 Caprock Consulting 下载字典组件:http://web.archive.org/web/20000619122506/http: //www.caprockconsulting.com/data/CaprockDCT.zip

于 2009-07-16T06:13:06.260 回答
2

我有 LookupTable 组件,如果有兴趣可以提供给您。

但是,我注意到您可以在应用程序范围内使用 .NET HashTable,这可能对您有用。

这样做:

<object id="YOUR_VAR_NAME" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>

这将为您提供一个全局的、应用程序范围的 HashTable 对象。

不过要小心修改它,我遇到内存泄漏问题,最终应用程序会话处理变得不可靠(没有正确调用 SessionStart)

于 2009-08-10T16:33:33.973 回答
1

我遇到了同样的问题,最后用我的字典内容提供了应用程序变量并添加了

    for each obj in application.Contents
        if Left(obj,6) = "urlLog" then
            application.Contents.Remove(obj)
        end if
    next

杀死 application.end 上 global.asa 中的所有应用程序变量(您也可以使用,Application.Contents.RemoveAll但我听说它存在一些问题,它会留下一些变量并导致内存泄漏,即使我可以找到任何可靠的来源来证明它...

Caprock 字典对你有用吗?

于 2009-08-21T18:30:11.743 回答