2010-08-19 80 views
2

我想創建一個全局會話,它將一直保持活動狀態,除非我們手動殺死它。如何用C#這樣做在asp.net 我在做什麼是創建全球會話

HttpContext.Current.Session["UserID"] = someValue; 

但在這樣的會話一段時間後消失。

回答

1

而是將數據存儲在應用程序狀態中。它會留在那裏,直到你刪除它,或應用程序死亡/回收/結束。

用法:

HttpContext.Current.Application["Foo"] = "bar"; 
+1

你能告訴我一些例子(代碼段) – Mac 2010-08-19 10:03:53

+0

@Mac:編輯答案。 – leppie 2010-08-19 10:53:14

0

您可以在下面的System.Web web.config中的超時 - >的sessionState - >超時。不知道你是否可以有一個無限的會議。

此外,您可能會對將應用程序存儲在「應用程序的會話」而不是用戶的應用程序對象感興趣。在我看來,因爲你提到了「全球」會議。

這是什麼應用?聽起來就像你實際上試圖將會話用作永久存儲器,但是即使你設置超時時間爲永不停止或5年或其他時間,這似乎也會起作用 - 因爲一旦應用程序重新啓動,會話就會「超時」 。你仍然可以解決這個問題,但是你最好尋找像數據庫這樣的真正的持久性解決方案。當然,我可能完全猜測你的申請。

+0

實際上,我正在創建一個登錄頁面,在此頁面中,驗證後,我正在創建該用戶的會話並簽名他/她。 – Mac 2010-08-19 10:06:15

+0

好的。然後發生什麼只是用戶在一段時間後註銷。如果時間太短,請檢查我上面提到的web.config中的設置,並且您應該沒問題! (這是幾分鐘內的數字) – Nicolas78 2010-08-19 10:13:35

0

由於nicolas78說使用會話超時配置屬性來控制用戶不活動後的會話過期。在情況下,你正面臨着地方會議應有效,只要瀏覽器是開放的要求,有兩種方式 -

  1. 使用cookie來存儲一些令牌,然後重新建立會話狀態使用,如果會話令牌過期。例如,如果用戶標識存儲在令牌中,用戶詳細信息可以從用戶存儲中恢復。最糟糕的是,你可能不得不將整個狀態移動到數據庫。
  2. 保持ASP.NET會話狀態,但通過從瀏覽器發出AJAX請求使其保持活動狀態。我建議在n/3時間間隔之後觸發這樣的請求,其中n是你的會話超時(確保至少有三個請求被做出來,即使兩個丟失或者落在邊緣上,一個通過)。
0

也許你是在配置文件?

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

型材活過的會議,通常用於存儲每個用戶設置,用戶可以編輯,如他們的聯繫方式和應用程序首選項。

配置文件可以與匿名用戶和經過身份驗證的用戶一起使用。當匿名用戶登錄時,他們的匿名配置文件可以遷移到已認證的配置文件(即附加到其用戶名的配置文件)。

好演練在這裏:http://quickstarts.asp.net/quickstartv20/aspnet/doc/profile/default.aspx