我創建了一個空的mvc3項目。爲什麼我的會話沒有過期?
它有一個控制器(「家」)和2個動作(「指數」,「約」)
我使用SQLSERVER救我的會話。
這是我的配置文件。
<sessionState mode="SQLServer" cookieless="false" timeout="1" sqlConnectionString="Data Source=localhost;Integrated Security=True;MultipleActiveResultSets=False">
超時是1分鐘。
在索引頁中。我創建了一個會話
Session["currentTime"] = DateTime.Now.ToString();
在我的關於頁面中,我把它寫在視圖中。
@Session["currentTime"]
第一次,我打開了關於頁面,當前時間顯示。我獨自離開頁面5分鐘,然後重新刷新它。舊的currentTime仍然存在。我將超時設置爲1,所以它現在應該過期,並且不應該在頁面上顯示任何內容。
也許我完全誤會了會話是如何工作的。請告訴我爲什麼會話價值在其過期後仍然存在。
編輯:
它不是緩存。我添加了以下代碼來禁用緩存。仍然有問題。
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
我想我找到了hte問題,不知道如何解決它。
我從Chrome中清除了我的緩存。打開「/ home/index」頁面創建會話,然後進入「/ home/about」頁面。檢查數據庫。有一個會話創建。再次檢查「創建」和「過期」字段。確認它會在一分鐘後過期。
然後我離開我的電腦5分鐘。在我回來刷新「/ home/about」頁面後。會議仍然在那裏,沒有過期。查詢我的會話表,注意「過期」字段改爲1分鐘+刷新頁面的時間。爲什麼過期字段改變?????????
月2日更新:
我相信這是問題所在。 SQL會話提供程序不會主動監視會話表中的Expires列。相反,會話在從表中刪除之前不會「正式」過期,這是通過調用DeleteExpiredSessions存儲過程的SQL代理作業完成的。默認情況下,作業配置爲每60秒運行一次。
我很確定我的SQL代理沒有運行。但不知道如何打開它。如果您有任何想法,請告訴我。
請參閱我的答案以檢查如何打開sql代理 – Anand 2012-07-25 08:33:09