2

データはアプリの実行中にのみ必要になるため、グローバルにアクセス可能なリストをC#/ ASPプロジェクトに保存する必要があります(データベースではなくサーバー上のグローバルアプリに保存します)。

これまで、アプリケーションの開始時にリストを作成しようとしました(Global Asax) activePages= new List<ActivePage>(); Session["activePages"] = activePages;

この時点でセッションを設定できないため、これは明らかに失敗します。正しい方法は何ですか?

理想的には、アプリの起動時に空白のリストを設定し、任意のセッションからリストに追加できるようにしたいです(つまり、PCとラップトップから同時にこのリストに追加できます)

私はすでにすべての追加と管理を行うためのコードを持っていますが、このリストをグローバルに永続化する方法を見つけることができません。また、アプリの他のページでこのリストをどのように使用しますか?私はこれまでグローバルなアサックスに触れる必要はありませんでした。

4

2 に答える 2

3

アプリケーションの状態を確認する必要があります。を使用してSessionも問題は解決しません。アプリケーションにアクセスする各ユーザーについては、新しいセッションが作成されます。また、しばらくすると非アクティブSessionになり、破棄されます。

   void Application_Start(object sender, EventArgs e) 
   {
        List<ActivePage> activePages= new List<ActivePage>();
        Application["ActivePages"] = activePages;
   }
于 2013-01-31T12:32:20.623 に答える
0

どこからでもデータにアクセスする必要がある場合は、静的変数を定義できます。アプリケーションの開始時よりも、この変数にデータをロードできます。

public static List<ActivePage> ActivePages= new List<ActivePage>();

protected void Application_Start(object sender, EventArgs e)
{
   ActivePages = LoadFromDB()
}

変数は静的であるため、いつでもどこからでもこのリストに値を追加できます。

ただし、後でデータをどのように処理しますか?IISを再起動すると、このリストのすべてのコンテンツが失われます。

この種のグローバルストレージにはセッションを使用できません。

于 2013-01-31T12:32:27.383 に答える