Asp.net Web サービスがあります。メソッド M1 があります。M1 は、セッションごとにフォルダーを作成します。セッションの有効期限が切れたら、次のコードを使用して global.asax 内のそのフォルダーを削除します。
void Session_End(object sender, EventArgs e)
{
try
{
System.IO.DirectoryInfo dirMyPacksFolder = new System.IO.DirectoryInfo(Utilities.getMyPacksFolder(Session));
//dirMyPacksFolder.Parent.CreateSubdirectory("ended_" + Session.SessionID);
if (dirMyPacksFolder.Exists)
{
dirMyPacksFolder.Delete(true);
}
}
catch (Exception ex)
{
Utilities.logException("", ex);
}
}
ブラウザで Web サービスを開いて M1 を呼び出すと、正しく動作し、設定したタイムアウトの有効期限にフォルダが削除されます。しかし、Webサービスの「呼び出し」ボタンを2回目に送信すると(セッションタイムアウトとフォルダーが削除された後)、そのセッションが開始(フォルダーの作成)され、設定したタイムアウトの直前に終了(フォルダーの削除)されます。
なぜこれが起こるのですか?
メソッド呼び出しごとに新しいウィンドウ (新しいセッション) を開くと、すべて問題ありません。しかし、「Invoke」ボタンを2回クリックすると問題が発生します。これは、同じセッションのキャッシュの問題のようなものです。