从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 Component和free Dictionary Component from Caprock Consulting - 两者都是死链接。
文章清楚地解释了为什么你不能在应用程序范围内使用 Scripting.Dictionary ,但我想知道是否有人知道一个免费的替代方案或我可能在哪里找到4GuysFromRolla提到的旧组件的副本?
答案 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字典为你工作?