这可能是一个愚蠢/蹩脚的问题,尤其是在使用 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 Server
或State Server
,那么当应用程序被关闭时, session 可以继续存在。然后,由于客户端在浏览器中保留了原始 session cookie,因此下次访问该站点时, session 将重新启动,并且 sessionid
用于标识其现有 session 。
关于asp.net - ASP.NET session 的生存时间可以比应用程序长吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341397/