セッション タイムアウトを設定している Asp.net アプリで問題が発生しており、一定の時間が経過してもセッションの有効期限が切れていません。このアプリには SQL Server 2008 バックエンド データベースがあり、そこにこのアプリのセッション タイムアウト値を保存しています。現在、テスト目的で 3 分に設定しています。Global.asax の Session_Start には、次のものがあります。
// Set the timeout
int timeout = GetSessionLength();
this.Session.Timeout = timeout;
また、GetSessionLength()
セッション タイムアウトについてデータベースにクエリを実行した後、整数値を返す関数です。
次に、サイトのマスター ページの Page_Load には、次のように表示されます。
System.Web.UI.HtmlControls.HtmlMeta hmRefresh = new System.Web.UI.HtmlControls.HtmlMeta();
hmRefresh.HttpEquiv = "Refresh";
hmRefresh.Content = (this.Session.Timeout * 60).ToString();
Page.Header.Controls.Add(hmRefresh);
これにより、タイムアウトになるとページが自動的に更新されます。これを使用して、私のページは正常に更新されています。ただし、セッションの有効期限が切れたときにヒットする他のコードがありますが、セッションの有効期限が切れていないことが示されているため、ヒットすることはありません。
また、私は自分のコンピューターで別のアプリを開発しており、そのアプリで同じコードを使用してセッションのタイムアウトを検出しており、そのアプリに最適です。ですから、なぜこれがそうではないのかわかりません。