こんにちは、私は asp.net SESSIONS がどのように機能するかについてあまり詳しくありませんが、いくつか読んだ後、あまり努力せずに問題を解決するのに役立つことがわかりました。
私の問題は、ユーザーがサーバーにドキュメントをアップロードすることは許可されているが、投稿ボタンを押すまで実際にはデータベースに保存できないという状況に関連しています。
ドキュメントをアップロードしてブラウザを閉じると、ドキュメントはファイルシステムに残り、どのドキュメントがそこに保存されたかを知る方法はありません。
この問題を解決するために、ファイル システムに保存される実際のドキュメントではなく、ドキュメントの詳細をセッションに保存することにしました。
ページが最初にロードされると、セッションに保存されたデータに基づいてファイルシステムのクリーンアップが実行されます。
残っているのは、ユーザーがブラウザーを閉じて、その間にセッションが期限切れになる場合を処理できることだけです。
いくつかの調査の結果、ブラウザを閉じてもセッションが期限切れになると、Session_OnEnd メソッドが runes であることがわかったので、ここにコードを追加しました。
public void Session_OnEnd()
{
var session = Session[Constants.FILE_SHARE_DOCUMENT];
if (session != null)
{
var documents = (List<Document>)session;
foreach (var document in documents)
{
string filePath = Path.Combine(Constants.SERVER_PATH, document.StorageFileName);
File.Delete(filePath);
}
}
}
また、セッションの終了を 1 分に設定しましたが、試したすべてのケースでうまくいくようです。
これが私の問題を解決する信頼できる方法であるかどうか、誰でも確認できますか?
不足しているものはありますか?