2012-02-21 60 views
20

在web.config中,我將sessionState中的超時設置爲20分鐘。根據MSDN,此超時指定會話在放棄之前可以閒置的分鐘數。在IIS 7中,DefaultWebSite-> Session State-> Cookie Settings-> Time Out會自動填充web.config中設置的超時值,在我的情況下爲20分鐘。此外,應用程序池 - > DefaultAppPool->高級設置 - > idleTimeout,我將它設置爲10分鐘。會話超時在IIS 7中如何工作?

然後我做了兩個測試: 第一次測試:我在下午3點45分登錄了我的web應用程序,閒置了10分鐘。在下午3點55分,我嘗試使用我的應用程序,我被踢出了。我認爲idleTimeout正在發揮作用。

第二項測試:我在下午4點登錄我的網絡應用程序,在下午4點05分,下午4點10分,下午4:15和下午4點20分與應用程序一起玩。我預計在下午4:20被踢出。但我沒有。我認爲IIS 7中的會話狀態超時(20分鐘)是用戶會話在Web代理挑戰用戶重新進行身份驗證之前可以處於活動狀態的最長時間。顯然從這個測試來看,事實並非如此。任何人都可以向我解釋?另外,我如何設置以上情況的超時時間?

回答

34

會話超時是每次訪問服務器時爲用戶重置爲配置值的滑動超時。

如果在這段時間內沒有任何請求到您的應用程序,則應用程序空閒超時將開始。因此

通常的情形是:

Time | User A  | User B  | Session States 
------+--------------+--------------+------------------------------------------- 
12:00 | Visits Page1 |    | A: New Session, Time-out: 20 minutes 
12:02 | Visits Page2 |    | A: Time-out reset: 20 minutes 
12:10 |    | Visits Page1 | A: Time-out: 12 min; B: New: 20 minutes 
12:15 |    | Visits Page2 | A: Time-out: 07 min; B: Time-out: 20 min 
12:22 |    |    | A: times out; B: 13 min remaining 
12:32 |    |    | Application Shuts Down (Idle time reached) 
12:35 | Visits Page3 |    | A: New Session Starts 

如果用戶A是12:22後返回到現場,他們將有一個完全新的會話,你已經存儲在那裏的任何值之前會丟失。

確保會話持續存在於應用程序重新啓動之上的唯一方法是配置SessionState服務或SQL會話狀態,並確保您擁有configured the machine.key,這樣每次服務器重新啓動時都不會自動生成。

如果您使用的是認證標準的ASP.NET機制,那麼ASP.NET會會發出兩個cookie給每個用戶:

  1. 身份驗證令牌:由Authentication time-out設置控制,允許用戶如果Cookie尚未過期,它會自動登錄到您的站點,這可以是固定的或滑動的,默認爲30分鐘,這意味着它們的身份驗證令牌可以應對比會話更長的「空閒」時間段。
  2. 會話令牌:由會話超時設置控制,允許您的應用程序在其訪問期間存儲和訪問每個用戶的值。

這兩個cookie都使用MachineKey加密 - 所以如果您的應用程序回收並生成新密鑰,那麼這些令牌都不能解密,要求用戶登錄並創建新會話。使用Session.Add(string, object)方法

  1. 20分鐘的會話超時涉及您放置在用戶會話對象(HttpSessionState)項目:


    回覆評論。

  2. 這取決於。如果您的輸入正確configured the machine.key,身份驗證令牌仍然有效,並且如果您的會話不再是「InProc」,則這些身份驗證也將在應用程序重新啓動後持續存在,並且仍然可讀 - 請參閱上面的註釋。
+0

但爲什麼我在第二次測試期間不需要重新登錄? – GLP 2012-02-21 21:52:15

+0

因爲每次您訪問服務器計時器都會重置 - 按照我的表格。 – 2012-02-21 22:05:20

+0

謝謝Zhaph,我還有兩個問題,(1)20分鐘會有什麼影響? (2)在應用程序關閉後,B是否必須重新登錄? – GLP 2012-02-22 14:13:25