关于会话超时

时间:2011-11-04 08:34:50

标签: asp.net

我遇到有关会话超时的问题。如何将用户会话存储1天。如果用户Logout.It不影响用户会话,用户会话将持续一天。

3 个答案:

答案 0 :(得分:2)

您可以在web.config中的<sessionState>元素中设置timeout属性。这就是说,如果您正在使用InProc会话(存储在内存中),您应该知道IIS在某些情况下可以回收应用程序池(不活动时间,达到CPU /内存限制阈值,......)。如果会话存储在服务器的内存中,则会发生这种情况。要解决此问题,您可以使用进程外会话(StateServer或SQL)。您可以阅读不同的session state modes

答案 1 :(得分:0)

您不想为此使用会话。 (至少不是InProc会议。)

您可以增加会话的超时时间,但这意味着每个访问者都有一个Session对象,它们在离开站点后的一天内存活(假设您实际在Session对象中存储了某些内容)。如果每天有10000个访问者,这意味着内存中总会有大约10000个Session对象潜伏。

应用程序池通常会定期回收,这意味着所有当前的Session对象都将丢失。

您可以将用户身份存储在持久性cookie中,以及数据库中的任何其他数据。正如Darin Dimitrov建议的那样,你也可以使用进程外会话。

答案 2 :(得分:0)

您可以更改session文件中的默认web.config超时。

ASP.NET Session State所述,您可以执行类似的操作,并可以更改时间

<configuration>
  <sessionstate 
      mode="inproc"
      cookieless="false" 
      timeout="20" 
      sqlconnectionstring="data source=127.0.0.1;user id=<user id>;password=<password>"
      server="127.0.0.1" 
      port="42424" 
  />
</configuration>