2013-02-18 70 views
2

在我的登錄頁面中,我將連接字符串和登錄用戶角色放入會話變量中。爲了檢查會話是否已經過期,我把下面幾行代碼放入其他頁面的page_load事件中。會話變量是否在不同的時間量後過期?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["userRole"])==null 
     Response.Redirect("Login.aspx"); 

    ......... 
} 

,但我得到Session[conString] is expired錯誤有時當Web應用程序是閒置了一段時間。現在我想知道不同會話變量的到期時間是否不同。如果沒有,那麼當應用程序檢測到會話過期時,我不應該被重定向到登錄頁面嗎?

+0

嘗試記錄Session [「userRole」]並查看連接字符串到期時記錄的值。實際上,會話變量不會過期,但會話確實如此。 – Kangkan 2013-02-18 08:28:16

+0

如果應用程序由於web.config的更改而重新啓動,或者應用程序池回收,則會話也會丟失。 – 2013-02-18 08:38:11

回答

3

應用程序的空閒超時可能比會話超時短。這意味着如果Web服務器在您指定的會話過期之前處於空閒狀態,它將會終止您的應用。

而且不,會話變量不會過期。會話確實(在指定的超時之後)。

+0

那麼空閒超時和會話超時完全是兩回事?我不知道這一點。謝謝你的線索。 – 2013-02-18 08:49:05

+0

@MikeJM - 是的,空閒超時是您可以在IIS(Web服務器)中設置的事情,會話超時是應用程序配置的一部分。 – Venemo 2013-02-18 10:01:16