ASP.NET会话可以比Application更长寿

Shr*_*kar 5 asp.net session-variables session-state application-variables

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

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

换句话说,如果在Global.asax中调用Application_End,它是否表示不再有活动会话?任何新请求都会导致Application_Start后跟一个新的Session_Start?

注意,会话可能不总是InProc,会话可能在状态服务器或SQL服务器中.

The*_*ing 5

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

如果使用Sql ServerState Server会话存储在单独的计算机上,那么当应用程序被拆除时,会话可以继续存在.然后,因为客户端在浏览器中保留原始会话cookie,所以当他们下次访问该站点时,会话将重新启动,并sessionid用于标识其现有会话.