2

コードに保存されている値を定期的に使用している場合に、セッションの潜在的な期限切れに対処するための最良の (たとえば、最も効率的で、一般的に受け入れられている、業界標準の) 方法は何だろうと思っています。

たとえば、私はよく (C# で) 次のような行を使用しています。

Guid personGuid = (Guid)Session[SSPersonGuid];

値が null であるかどうかを Page_Load でチェックし、それに応じて処理していますが、その人がページにいる間にセッションが期限切れになる可能性があります。その場合、ページ上のボタンをクリックすると、上記のようなものを使用する必要があります。 NullReferenceException になります。

次のように使用する前に null をチェックするためだけにこれを処理する最良の方法は次のとおりです。

if (Session[SSPersonGuid] == null) {...}

それとも、私が知らない何か特別なことがありますか?

4

2 に答える 2

1

セッションの潜在的な期限切れに対処するための最良の(たとえば、最も効率的で、一般的に受け入れられている、業界標準の)方法は何ですか?

最善の方法は、アウトオブプロセスセッション状態サーバーまたはアウトプロセスSQLServerをセットアップして期限切れにならないことです。

また、 Session_OnEndイベントでそれを検出することもできます

編集:

ジェフ・アトウッドがここで言うことはスコッツの答えに対応しています:http: //www.codinghorror.com/blog/2008/04/your-session-has-timed-out.html

さまざまなソースからのセッションタイムアウトメッセージが毎日殺到していますが、たとえばGmailからのセッション期限切れメッセージは一度も見たことがありません。これが私が提案するものです:

  1. サーバーに定期的なハートビートを送信するバックグラウンドJavaScriptプロセスをブラウザーで作成します。たとえば、5分または10分ごとに、有効期限が設定された新しいCookieを再生成します。

  2. セッションハイジャックが心配な場合、そして本当にそうあるべきである場合は、HTTPSで保護された接続を使用してください。これは、あらゆる種類の金融機関にとって非常に簡単です。

于 2012-08-16T03:09:49.837 に答える
0

私がよく目にするのは、セッションの有効期限が近づいているかどうかを確認するタイマーを含む各ページで読み込まれる JavaScript です。その場合 (たとえば、2 分後)、セッションが期限切れになることをユーザーに通知するポップアップを表示し、続行するかどうかをユーザーに尋ねます。その後、スクリプトはサーバーに AJAX コールバックを行い、セッションを存続させます。

ただし、JavaScript をオフにしているユーザーの問題を防ぐことはできません。

于 2012-08-16T03:11:42.310 に答える