什么会话将在Asp.net或Asp.Net MVC中过期?

问题描述 投票:1回答:3

我是.net技术的新手,我对会话的概念感到困惑,只是我想知道会话什么时候会过期?

1)是会话超时

(要么)

2)用户空闲。

请澄清我的疑问。

asp.net asp.net-mvc session
3个回答
0
投票

如果可能的话,会话是你应该避免的。它不能很好地扩展,并且不可靠。如果您确实使用了Session,那么它应该是短暂的,因为您无法保证会话将在InProc会话中保持活动状态多长时间。

无论如何,根据您的设置,会话可以是超时或空闲。如果启用滑动超时,则实际上会成为空闲超时。如果您没有启用滑动超时,那么它是基于平时的超时。

然而,再次,仅仅因为超时可能是20分钟,不能保证它将在20分钟内可用。


1
投票

会话丢失的原因很多。仅举几例,

  • 应用程序池被回收。 - 我们将了解这一点,查看系统日志
  • IIS /工作进程重新启动。 - 系统日志也会告诉你
  • 应用程序域重新启动。 - 我们需要监视perfmon中ASP.NET计数器的应用程序重启以检查这一点。应用程序重启的几个原因包括 某些应用程序触及了应用程序的Bin文件夹 触摸了Web.config或machine.config 感动了Global.asax文件
  • 防病毒正在运行
  • 代码中的某些东西导致会话丢失,它可以是任何东西。您需要查看代码才能解决此问题。
  • 还有很多...

  • 根据您的选项,会话将从会话超时到期,因为用户空闲也会在特定时间段后导致会话超时。

来源:MSDN Blog


0
投票

asp.net中的会话将在超时后到期,默认情况下超时为20分钟[msdn reference]。

此超时是滑动超时,这意味着如果用户在这20分钟内显示任何活动,倒计时将再次从20分钟开始。因此,为了使会话到期,用户应该闲置20分钟。

您可以在Web.config的标记中更改此超时,如下所示。

     <sessionState mode="InProc" cookieless="false" regenerateExpiredSessionId="true" timeout="35">
       <providers>...</providers>
     </sessionState>
© www.soinside.com 2019 - 2024. All rights reserved.