2011-12-17 9 views
8

以下のカスタムSQLサーバーを使用するようにsessionStateを構成し、1分後に有効期限が切れるように設定しました。セッションは常にブラウザとSQLサーバに残っているようです。私はさらに、regenerateExpiredSessionIdをfalseに設定しても、同じ問題を抱えています。私はIIS 7のWindows 7プロの下でasp.net 4.0を実行しています。ASP.NET sessionState SQLServerモードのタイムアウトが機能しない

私のweb.configファイルの設定

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=MYCON\SQL2008REXPRESS;Initial Catalog=DBASPState; User ID=DB1543Write;Password=test" timeout="1" sqlCommandTimeout="10" regenerateExpiredSessionId="false" stateNetworkTimeout="10" compressionEnabled="true" cookieless="false" /> 

私はてsessionStateデータベース内のテーブルASPStateTempSessionsをチェックし、それ内のレコードを見てきました。読み取りおよび書き込みの所有者権限は、このデータベースのユーザーで構成されています。 「Even Viewer」からのエラーはありません。

私はASPStateTempSessionsテーブルから値をチェックしました。セッションがオフになっているように見えますが、5時間は1分間と比較しています。 asp.netは、現在のマシンのタイムゾーンではなく、別のタイムゾーンを使用して1分以内に有効期限が切れるように設定されているようです。 29:01.677 は有効期限(列)2011年12月17日17時30分

私の現在の時刻が2011年12月17日11:29 データベース列が(列)2011年12月17日17値CreatedDateにしていたあります:03.903

データベースの値に関する詳細は以下のとおりです。私は、ブラウザの「更新」ボタンを押した後、私が最初に私のウェブサイト

SessionId, Created, Expires, LockDate, LockDateLocal, LockCookie, Timeout, Locked, SessionItemShort, SessionItemLong, Flags 
0wtp4j0traj5e0gydygkyoe22476b033 2011-12-17 17:29:01.677 2011-12-17 17:30:03.903 2011-12-17 17:29:03.873 2011-12-17 11:29:03.873 11 1 False <Binary data> NULL 0 

を訪問したときに

最初のレコードがあり、レコードは新しい有効期限が切れた時点で更新が、セッション情報がまだそこにあるました

0wtp4j0traj5e0gydygkyoe22476b033 2011-12-17 17:29:01.677 2011-12-17 17:37:08.910 2011-12-17 17:36:08.907 2011-12-17 11:36:08.907 13 1 False <Binary data> NULL 0 

答えて

11

有効期限はUTCです。

SQLセッションが期限切れになると、すぐにセッションテーブルから削除されたり、Session_Endイベントを受け取ることはありません。

SQLセッションプロバイダは、セッションテーブルのExpires列をアクティブに監視しません。その代わりに、セッションはDeleteExpiredSessionsストアドプロシージャを呼び出すSQL Agentジョブで実行されるまで、テーブルから削除されるまで「正式に」期限切れになりません。デフォルトでは、ジョブは60秒ごとに実行されるように設定されています。もちろん、これはセッションの有効期限を稼働させるためにSQL Agentを実行する必要があることを意味します。また、「実際の」有効期限が切れる前に、「名目上の」有効期限が切れてから少なくとも60秒待つ必要があることも意味します。

必要に応じて、SPに電話することで期限切れにすることができます。

+0

@JamesSmithこれは本当にあなたのためですか?私は同じ問題に直面していますが、テーブルからセッションを削除した後もログアウトしません。あなたはいくつか考えを与えることができますか? – jkyadav