0

asp.net Web アプリケーションについて質問があります。SQL Server セッション状態を使用する Web アプリケーション。ログアウト イベントはセッションを削除できますが、タイトル バーの [閉じる] ボタンを押すとセッションが削除されます。タイトル バーの閉じるボタンを押したときに制御できるイベント。タイトルバーの閉じるボタンを押したときに session_end イベントがキャッチできることについて読みました。ただし、SQL Server セッション状態を使用して session_end イベントを発生させることはできません。どのようにキャッチすることができますか?

4

1 に答える 1

0

ブラウザーを閉じても、サーバー上のセッションは終了しません。サーバーは、開いているブラウザーと閉じているブラウザーの違いを認識できません。単に要求を受信して​​応答を送信し、別の要求を待っているだけです。リクエストがない状態が一定時間続くと、セッションはタイムアウトになり、session_end イベントが実行されます。

セッションを終了したい場合は、サーバーがセッションを終了することを知るために、ブラウザを閉じたときに、ある種の ajax リクエストをサーバーに送り返す必要があります。

編集

jQueryを使用してこのようなことを行うことができます

$(window).unload(function() {
  $.post('someurl');
});

someurl を、ブラウザーが閉じられたことをサーバーに伝える Web サービス、ハンドラー、または mvc コントローラー アクションなどの URL に置き換えます。

次に、サーバー側で行うだけです

Session.Abandon();
于 2012-06-28T10:08:13.407 に答える