セッション構造を実装しています。
ConcurrentDictionary
サーバー側ですべての<SessionId, UserSession>
ペアを保持しています。
新しい接続が確立されると、オプションに応じて、Cookie がクライアント ブラウザ、perm または temp に割り当てられRememberMe
ます。
クライアントがLogOut
関数を呼び出すと、ディクショナリからセッションが削除されます。
ただし、クライアント ブラウザが単純に閉じられるかクラッシュし、Cookie が失われたり、期限切れになったり、削除されたりした場合、メモリ内のサーバー側セッション オブジェクトはディクショナリに残り、ゴーストになります。時間が経つにつれて、これらの幽霊は積み重なっていきます。
私の質問は、デッド セッションが期限切れになった後にクリーンアップできるように設計を改善する方法は?
掃除スケジュールを実行するタイマーサービスを作ろうと思ったのですが、エレガントではありません。外部サービスに依存せずにこれを行う簡単な方法はありますか?