3

現在取り組んでいるプロジェクトに、いくつかのアプリケーションレベルの動作を実装する必要があります。頭を悩ませる必要があることがいくつかあります。1。アプリケーションレベルの変数をどこでどのように定義しますか?2.これらの変数の有効期間はどれくらいですか?またはもっと正確に言えば、どのようなシナリオでそれらは破棄されますか?(アプリケーションプールのリサイクル?アプリケーションバイナリがメモリから削除され、次のリクエストで再コンパイルされますか?など)3。global.asaxファイルは、セッションカウンターを配置するのに適した場所ですか、それともDB/ファイルに値を保存する方が適切ですか。この種のデータを永続化する方法は?

コメントやアイデアは大歓迎です。ありがとうございました!-エラッド

4

1 に答える 1

3

アプリケーションレベルの変数には、アプリケーションの存続期間があります。これは、アプリケーションプールがリサイクルされ、破棄されることを意味します。
アプリケーションプールは、さまざまな理由でリサイクルできます。IIS 6/7は、特定の時間後、特定の数の要求後、または指定された間隔でアプリプールがリサイクルされるように構成できます。アプリケーション変数は次のように設定します。

Application["DbConfig"] = "my value";

ただし、別の場所で設定/アクセスしようとすると発生する可能性のある問題に注意する必要があります。変数が更新されたときに変数をロックする方法を採用する必要があります。

私はweb.configすべての構成パラメーターに使用し、アプリケーションフィールドを格納するために使用する独自のクラスを作成しました。

namespace Web.My
{
    public class Application
    {
        public static string ApplicationStorageFolder
        {
            get
            {
                return (System.IO.Path.Combine(HttpContext.Current.Server.MapPath("~"), "_AppStorage"));
            }
        }
    }
}

いくつかのフィールドを設定する必要がある場合は、アプリケーションの起動時に行いますApplication_Start 。情報を保持する必要がある場合は、アプリケーションの起動時とシャットダウン時に値を保存および読み取るための独自の構成ファイル(xmlまたは単純なテキスト)を作成できます。クラスをXMLファイルでシリアル化して準備できるようにし、プロパティを簡単に再設定できます。dbも問題ありません。セッションカウンターでも同じことをします。

于 2011-04-05T08:00:50.507 に答える