在Classic ASP中的应用程序范围中使用字典对象

时间:2009-05-26 09:52:11

标签: asp-classic dictionary scope scripting.dictionary

my last question跟进有没有人知道如何在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上找到this article,但它指向Microsoft's free Lookup Componentfree Dictionary Component from Caprock Consulting - 两者都是死链接。

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

这样做:

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

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

请注意尽快修改它,但我遇到了memoryleaks的问题,最终应用程序会话处理变得不可靠(不会正确调用SessionStart)

答案 2 :(得分: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但是我听说有一个som问题,它留下了一些变量并导致内存泄漏,即使我可以net找到任何可靠的来源来证明它......

无论如何是Caprock字典为你工作?