设置特定会话的超时

时间:2011-08-20 04:02:50

标签: c# asp.net session

如何在ASP.NET中设置特定会话的超时?有可能的? 我的Web应用程序中有两个或更多个sesions,我需要设置:

Session["foo"] //expire in 14minutes
Session["baa"] //expire in 30minutes

我想要解决这个案子,如果可能的话不使用cookies。

提前致谢!

4 个答案:

答案 0 :(得分:2)

您可以在Web.config文件中配置会话超时:

<configuration>
    <sessionstate mode="inproc"
                  cookieless="true"
                  timeout="14" />
</configuration>

这是ASP.NET的默认模式(InProc)。正如rockinthesixtring在他的评论中所说的那样,你不能为会话中的单个对象配置超时,只能配置整个会话。

ASP.NET Session State Overview

答案 1 :(得分:0)

由于其他问题正在作为此问题的副本被关闭,我想在此处为可能认为有用的人添加此选项。

您可以使用以下方法手动设置会话超时:

Session.Timeout = 60

您可以在这里阅读更多内容:

https://msdn.microsoft.com/en-us/library/ms525473(v=vs.90).aspx

答案 2 :(得分:0)

针对特定会话 假设您要为此会话设置超时Session [“ foo”] = 14分钟  你可以这样做

DateTime timenow=DateTime.now;
DateTime timeafter14min=timenow.AddMinuits(14);

if(DateTime.Now>timeafter14min)
{
 HttpContext.Current.Session["foo"]=null;
}

会话未过期但已清除

答案 3 :(得分:-1)

    <sessionState 
       mode="InProc" 
       stateNetworkTimeout="10" //seconds
       cookieless="UseCookies"
       cookieName="ASP.NET_SessionId" //Specifies the name of the cookie that stores the session identifier.
       timeout="20" //seconds
       regenerateExpiredSessionId="true" 
       useHostingIdentity="true">
      </sessionState>

or

session["user"]=textbox_username.txt

<configuration>
  <system.web>
    <sessionState cookieless="true"
      regenerateExpiredSessionId="true" />
  </system.web>
</configuration>