セッションがタイムアウト(たとえば10分)に達したときにポップアップ/レイヤー/アラートを発生させる必要があるasp.netサイトがあります。ポップアップには、非アクティブのためにアカウントセッションが期限切れになり、セッションを続行するためのボタンまたはログアウトするためのボタンがあることが示されます。
これをオンラインで行うさまざまな方法がありますが、これを処理するための最良/適切な方法は何ですか?ポップアップが長すぎる場合、追加のタイムアウトを設定する必要がありますか?
<script type="text/javascript">
var sessionTimeoutWarning = "<%= System.Configuration.ConfigurationManager.AppSettings["SessionWarning"].ToString()%>";
var sessionTimeout = "<%= Session.Timeout %>";
var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
setTimeout('SessionWarning()', sTimeout);
function SessionWarning() {
var message = "Your session will expire in another " +
(parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning)) +
" mins! Please Save the data before the session expires";
alert(message);
}
</script>
これは以前に対処されています。たとえば、 ASP.NET - web.config の sessionState timeOut に基づく Javascript timeOut 警告
ただし、私の知る限り、これを行うための完全に信頼できる方法はありません。
ここでは、クライアント側のテクノロジー (javascript) を使用する必要があります。たとえば、javascript タイムアウト機能を使用して警告を表示します。ユーザーが [OK] をクリックした場合、セッションを維持するために何かを行う必要があります。jquery.ajax メソッドを使用することをお勧めします。サーバーへの呼び出しは、セッションを維持するためだけのダミー呼び出しになる可能性があります。
jquery と setinterval 関数を使用して、バックグラウンドで Ajax ポストを実行してタイムアウトを更新するか (スライド有効期限を使用している場合)、またはセッションの開始時刻を記録して有効期限から差し引いて残り時間の値を取得できます。