asp.net - ASP.NET session 的生存时间可以比应用程序长吗

标签 asp.net session-state session-variables application-variables

这可能是一个愚蠢/蹩脚的问题,尤其是在使用 ASP.NET 这么长时间之后:),但我需要确定。

session (即 ASP.NET session )是否可能比应用程序(应用程序实例/应用程序域/应用程序变量)更长久?

换句话来说,如果在Global.asax中调用Application_End,是否表明不再有事件 session 了?任何新请求都会导致 Application_Start 后跟新的 Session_Start?

请注意, session 可能并不总是在 InProc 中, session 可能位于状态服务器或 SQL 服务器中。

最佳答案

使用默认的 InProc session 状态,应用程序将在最后一个 session 过期时终止,此时会发生 Application_End。在这种情况下,整个 appDomain 被拆除并释放所有内存。由于 session 持久保存在内存中,因此它们此时将被永久销毁,因此永远不会超出应用程序的生命周期。

如果使用将 session 存储在单独计算机上的Sql ServerState Server,那么当应用程序被关闭时, session 可以继续存在。然后,由于客户端在浏览器中保留了原始 session cookie,因此下次访问该站点时, session 将重新启动,并且 sessionid 用于标识其现有 session 。

关于asp.net - ASP.NET session 的生存时间可以比应用程序长吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341397/

相关文章:

c# - 从 mysql 检索 blob 并在 asp.net c# 和 linq 数据源中使用中继器显示

asp.net - 在 ASP.NET MembershipProvider 中获取当前 ApplicationId

session - 如何在用户单击返回时显示自定义 session 过期页面?

javascript - 使用 javascript 参数命名 sessionStorage 变量

asp.net - Javascript 检查页面是否有效

c# - 读取大型 XLSX 文件

IIS session 状态

ASP.Net session 状态提供程序故障转移场景

session - 是否可以在 ColdFusion 中过期或删除特定 session ,而不是该请求的 session ?

Grails 中的 hibernate session 范围