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.

この記事は(古き良き)4GuysFromRollaで見つかりましたが、 Microsoftの無料のルックアップコンポーネントとCaprockConsultingの無料の辞書コンポーネントを指しています。どちらもリンク切れです。

この記事では、アプリケーションスコープで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コンポーネントがあり、興味があれば提供できます。

ただし、アプリケーションスコープで.NETHashTableを使用できることに気づきました。これは便利な場合があります。

これを行うだけです:

<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 に答える