我是.net技术的新手,我对会话的概念感到困惑,只是我想知道会话什么时候会过期?
1)是会话超时
(要么)
2)用户空闲。
请澄清我的疑问。
如果可能的话,会话是你应该避免的。它不能很好地扩展,并且不可靠。如果您确实使用了Session,那么它应该是短暂的,因为您无法保证会话将在InProc会话中保持活动状态多长时间。
无论如何,根据您的设置,会话可以是超时或空闲。如果启用滑动超时,则实际上会成为空闲超时。如果您没有启用滑动超时,那么它是基于平时的超时。
然而,再次,仅仅因为超时可能是20分钟,不能保证它将在20分钟内可用。
会话丢失的原因很多。仅举几例,
- 应用程序池被回收。 - 我们将了解这一点,查看系统日志
- IIS /工作进程重新启动。 - 系统日志也会告诉你
- 应用程序域重新启动。 - 我们需要监视
perfmon
中ASP.NET计数器的应用程序重启以检查这一点。应用程序重启的几个原因包括 某些应用程序触及了应用程序的Bin文件夹 触摸了Web.config或machine.config 感动了Global.asax文件- 防病毒正在运行
- 代码中的某些东西导致会话丢失,它可以是任何东西。您需要查看代码才能解决此问题。
- 还有很多...
来源:MSDN Blog
asp.net中的会话将在超时后到期,默认情况下超时为20分钟[msdn reference]。
此超时是滑动超时,这意味着如果用户在这20分钟内显示任何活动,倒计时将再次从20分钟开始。因此,为了使会话到期,用户应该闲置20分钟。
您可以在Web.config的标记中更改此超时,如下所示。
<sessionState mode="InProc" cookieless="false" regenerateExpiredSessionId="true" timeout="35">
<providers>...</providers>
</sessionState>