0

こんにちは、データベースに保存せずにドキュメントのグループの状態を維持する必要がある状況があります。

ドキュメントをファイルシステムに保存し、セッション内に fileName と GUID を保存し、セッションの有効期限が切れてドキュメントを削除できるようにすることを考えていました。

問題は、セッションの有効期限が切れたかどうかを判断する方法が正確にわからないことです。

次のようなものがあるかどうかはわかっています: var session = Session["item"] セッション内に項目がない場合、null が返されます。

しかし、たとえばユーザーがブラウザを閉じた場合、どのように処理できますか。それを行うときにサーバーへの呼び出しは行われません。

この場合、ファイルシステム上のドキュメントを削除する必要があります。

これを達成する方法はありますか?

4

3 に答える 3

1

可能な解決策は、jquery を使用してこのようなアンロード イベントをキャプチャし、同時にコードを global.asax の Session_End に配置することです。

               $( window ).unload(function() {
                    //Write your logic to fire ajax call to delete the file                        
                 });

私に来る別の回避策は、サーバーにpingを実行するJavaScript時間を使用して、ユーザーがまだセッションにいることを伝えます。しばらくの間 ping を受信しない場合は、先に進んでファイルを削除してください。これは本当に良い解決策ではありませんが、Web ソケットまたはロング ポーリング ロジックを使用してユーザー セッションを追跡できます。

于 2013-10-08T06:08:29.627 に答える
1

Session_End内部でイベントを使用するGlobal.asax

詳細はこちら: http://msdn.microsoft.com/en-us/library/ms178583.aspx

セッション状態が OutProc の場合は、こちらもお読みください: http://blogs.msdn.com/b/amb/archive/2011/06/03/session-onend-or-session-end-won-t -fire-if-you-store-asp-net-sessions-out-of-proc.aspx

于 2013-10-08T05:53:04.853 に答える