在我的網絡應用程序中,我使用了一些會話變量,它們在我登錄時設置:會話變量在asp.net應用程序中超時
Session("user_id") = reader("user_id")
我通過我的應用程序使用它。
當會話變量超時時,主要在連接到數據庫時引發錯誤,因爲某些查詢需要session("user_id")
。
如何設置我的會話變量,以便一旦它們超時進入登錄頁面或者如何至少增加可用時間長度?
在我的網絡應用程序中,我使用了一些會話變量,它們在我登錄時設置:會話變量在asp.net應用程序中超時
Session("user_id") = reader("user_id")
我通過我的應用程序使用它。
當會話變量超時時,主要在連接到數據庫時引發錯誤,因爲某些查詢需要session("user_id")
。
如何設置我的會話變量,以便一旦它們超時進入登錄頁面或者如何至少增加可用時間長度?
我猜您在web.config中正在使用窗體身份驗證。這裏的技巧是確保您的表單身份驗證在會話執行之前到期。
How to redirect to LogIn page when Session is expired (ASP.NET 3.5 FormsAuthen)
例如:
我在這個答案在這裏寫這個
配置您的窗體身份驗證 - 這將超時時間設置爲60分鐘:
<authentication mode="Forms">
<forms defaultUrl="~/Default.aspx"
loginUrl="~/Login.aspx"
slidingExpiration="true"
timeout="60" />
</authentication>
延長會話過期較長時間:
<sessionState
mode="InProc"
cookieless="false"
timeout="70"/>
在你身後的Login.aspx
代碼也可以做一個Session.Clear();
分配會話值之前刪除陳舊的會話數據。
在過去,我在每個頁面上使用了一個基頁面或母版頁(使登錄頁面發生異常),該頁面讀取會話標記以查看用戶當前是否已登錄。
如果它讀取了空值,它會保存當前的url並重定向到登錄頁面。
登錄後會讀取保存的URL並將用戶重定向回請求的頁面。
增加會話超時值是IIS中的一項設置。
如何設置我的會話變量,這樣一旦被超時去登錄頁面
檢查它們是否= NULL做Response.Redirect("Home.aspx");
或如何能至少增加可用的時間長度?
它在sessionState元素
我想很多人把他們的會話調用包裝起來以提供一個「延遲加載」模式。類似這樣的:
class SessionHelper
{
public static string GetUserId()
{
string userId = (string)System.Web.HttpContext.Current.Session["UserId"];
if(userId == null)
{
userId = reader("UserId");
System.Web.HttpContext.Current.Session["UserId"] = userId;
}
return userId;
}
}