2013-02-18 41 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

相关问题