Asp classic 在经典ASP中使用应用程序范围中的dictionary对象
有人知道如何在经典ASP中使用应用程序范围内的dictionary对象吗?无法使用Scripting.Dictionary-如果尝试,您将看到类似以下内容:Asp classic 在经典ASP中使用应用程序范围中的dictionary对象,asp-classic,dictionary,scope,scripting.dictionary,Asp Classic,Dictionary,Scope,Scripting.dictionary,有人知道如何在经典ASP中使用应用程序范围内的dictionary对象吗?无法使用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.
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上找到了,但它指向和-两者都是死链接
这篇文章清楚地解释了为什么不能在应用程序范围内使用Scripting.Dictionary,但我想知道是否有人知道一个免费的替代方案,或者我在哪里可以找到4GuysFromRolla提到的旧组件的副本?我可以使用以下链接从Caprock Consulting下载字典组件:我有可查找组件,如果有兴趣,可以提供给您 然而,我还没有听说您可以在应用程序范围内使用.NET哈希表,这可能对您有用 只要这样做:
<object id="YOUR_VAR_NAME" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>
这将为您提供一个全局的、应用程序范围的哈希表对象
不过,请注意不要将其修改为严重错误,我在MemoryLeak中遇到了问题,最终应用程序会话处理变得不可靠(没有正确调用SessionStart)我也遇到了同样的问题,最后将字典的内容输入到应用程序变量,并添加了
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问题,留下一些变量并导致内存泄漏,即使我可以找到任何可靠的源来证明它
总之,Caprock字典对您有用吗?实际上,也可以在应用程序范围内创建scripting.dictionary:将其添加到global.asa+1中,这正是我所需要的。谢谢。将字典用作哈希表的全局对象是否有一些缺点?@rcdmk我想我看到了相同的内存泄漏趋势我也会使用字典,所以我建议不要大量修改字典。好的,谢谢。我只是用它来创建一个全局dict,并在global.asa上填充一些我用来本地化网站的文本。