【问题标题】:Do Session variables expire after different amount of time?会话变量会在不同的时间后过期吗?
【发布时间】:2023-03-21 14:50:01
【问题描述】:

在我的登录页面中,我将连接字符串和登录用户角色放入会话变量中。为了检查会话是否未过期,我将以下代码行放入其他页面的 page_load 事件中。

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

   .........
}

但有时当 Web 应用程序空闲一段时间时,我会收到 Session[conString] is expired 错误。现在我想知道不同会话变量的到期时间是否不同。如果不是,那么当应用程序检测到会话已过期时,我不应该被重定向到登录页面吗?

【问题讨论】:

  • 尝试记录 Session["userRole"] 并查看连接字符串过期时记录的值。实际上,会话变量不会过期,但会话会过期。
  • 如果应用程序由于 web.config 更改或应用程序池回收而重新启动,那么会话也会丢失。

标签: c# asp.net session-variables


【解决方案1】:

您的应用程序的空闲超时时间可能比会话超时时间短。这意味着如果您的应用在您指定的会话到期时间之前空闲,Web 服务器将终止您的应用。

不,会话变量不会过期。会话执行(在指定的超时之后)。

【讨论】:

  • 那么空闲超时和会话超时完全是两个不同的东西?我不知道。谢谢你提供这个线索。
  • @MikeJM - 是的,空闲超时是可以在 IIS(Web 服务器)中设置的,会话超时是应用程序配置的一部分。
猜你喜欢
  • 2016-11-11
  • 2020-12-08
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 2018-07-29
  • 1970-01-01
相关资源
最近更新 更多