アプリケーションは、Application_AcquireRequestState イベント ハンドラーで session.timeout を設定します。
セッションが期限切れになる前に、通知ウィンドウがポップアップします。Application_AcquireRequestState を介して、セッション タイムアウトをたとえば 3 分 (通常は 30 分) にリセットします。
通知は、ユーザーにセッションをさらに 30 分間延長するオプションを提供します。ユーザーが [はい] をクリックすると、前のイベント ハンドラーによってセッション タイムアウトが 30 分間リセットされます。
問題は、ユーザーが [はい] をクリックし、セッション タイムアウトが正しく設定されているにもかかわらず、設定された時間の前にセッションがタイムアウトしたように見えることです。これは通知後にのみ発生します。
疑わしいのは、Application_AcquireRequestState に達したときです。この要求のタイムアウトは既に計算されています。新しいタイムアウト値は、次のリクエストに使用されます。そのため、ユーザーが [はい] をクリックしてセッションを延長すると、通知ウィンドウで設定されたタイムアウトにより、現在の要求のタイムアウトは 30 分ではなく、わずか 3 分です。yes は、ユーザーが別のリクエストを送信した場合にのみ有効になります。
(通知ウィンドウには独自のタイミング オブジェクトがあります)
誰でもこれを確認できますか?または、asp.net がこれをどのように管理しているかを説明する適切なリソースを教えてください。
ありがとう!