一時的なイメージを動的に保存し、Webサーバーのファイルシステムでクリーンアップを処理するというテーマについて説明します(.NET 3.5のC#を使用)。global.asaxの使用方法と適用範囲(アプリケーション終了後のファイルクリーンアップ用)
これを処理するには、global.asax
ファイルを使用することをお勧めしました。
私はこのことがどのように機能するのか分かりません。
私は2つの別々のアプリケーションを持っている...
私は、Global.asaxのは、ウェブサイトのルートディレクトリにすることになっていることを考え出しました。
質問:
1)は、どのように私はglobal.asax
のみこれらの2つの特定のアプリケーションのために発射する取得します。
2)両方のアプリケーションで文字列のリスト(ファイルの場所)を作成し、アプリケーションの終了時に削除する必要があります。この配列をアプリで、またはglobal.asax
でインスタンス化しますか?
私のコードは次のようになります。
List<string> fileLocations = new List<string>();
//I don't know where to put this.
//The next line of code will be in both applications (this could
//be called many times in one application session. The names of
//the files are generated from the clock (milliseconds and
//seconds combined, I might change this to use the actual
//random class combined with sessionID)
fileLocations.Add(file);
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
foreach(string file in fileLocations)
{
if(File.Exists(file))
File.Delete(file);
}
}
私は、Global.asaxのは、実際にどのように機能するかについて混乱しています。それはインターフェイスのように使用されますか?
誰かがアプリケーションを使用してクリーンアップスクリプトを実行したときに検出する簡単な方法はありませんか?私はこれよりもはるかに簡単になるはずです:/ – Dave
ユーザーがログインしている場合は、Global.asaxでもSession_Endイベントを使用できます。デフォルトでは20分ですが、独自の制限を設定できます。 http://stackoverflow.com/questions/621744/how-to-handle-session-end-in-global-asaxおよびhttp://justgeeks.blogspot.com/2008/07/aspnet-session-timeouts.htmlを参照してください。 –
ああ、大丈夫です。 それで、global.asaxファイルでListを宣言すると、すべてのユーザーのセッションごとに新しいリストをインスタンス化するか、プログラム内でリストを宣言して何らかの形でglobal.asaxにアクセスできるようになります。 私が言ったように、私は基本的な質問をお詫び申し上げます...私は自分自身でこのようなことを考え出すのはかなり良いですが、なんらかの理由でglobal.asaxは私には直感的ではありません。 – Dave