2009-05-26 44 views
4

フォローアップmy last questionフォローアップ古典的なASPのアプリケーションスコープで辞書オブジェクトを使用する方法を知っている人はいますか?あなたはScripting.Dictionaryを使用することはできません - あなたは次のようなものが表示されますしようとした場合: - どちらの私は(古き良き)4GuysFromRollaにthis articleが見つかりましたが、それはMicrosoft's free Lookup Componentを指すとfree Dictionary Component from Caprock Consulting Classic ASPのアプリケーションスコープで辞書オブジェクトを使用

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. 

死んだリンクです。

記事は明らかにあなたがアプリケーションスコープにScripting.Dictionaryを使用することはできませんが、誰もが無料の代替またはところ私は4GuysFromRolla古いコンポーネントのコピーを見つけるかもしれないのを知っていた場合、私は思っていた理由を説明します言った?

答えて

2

私はルックアップテーブル成分を持っているし、興味があればあなたにそれを提供することができます。

しかし、私はあなたに役立つ可能性のあるアプリケーションスコープで.NET HashTableを使用できることに気付きました。

はちょうどこの操作を行います。

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

これはあなたのグローバル、アプリケーション全体のハッシュテーブルにオブジェクトを提供します。

重く、しかし、私は(適切SessionStartを呼び出しません)最終的にはアプリケーションのセッションハンドリングが不安定取得memoryleaksに問題があるために、これを修正することに注意してください

+0

ありがとうございます – gordatron

+2

実際には、アプリケーションスコープでもscripting.dictionaryを作成することができます。それをあなたのglobal.asaに追加してください。 – jishi

+0

+1私が必要としただけです。ありがとうございました。ディクショナリをHashTableのようにグローバルオブジェクトとして使用するといくつかの欠点がありますか? – rcdmk

1

私は同じ問題を持っていたし、アプリケーション変数を供給することになりました私の辞書の内容を持つとapplication.end上のGlobal.asa内のすべてのアプリケーション変数を殺すために

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

を追加しました(あなたもApplication.Contents.RemoveAllを使用することができますが、私はSOMの問題は、それはいくつかの変数を残していた聞きましたそしてメモリリークを引き起こしても、私はネットを見つけることができたそれを証明するオリーブのソース...

とにかくあなたのために働くCaprock辞書は何ですか?

関連する問題