如何在ASP.NET中设置特定会话的超时?有可能的? 我的Web应用程序中有两个或更多个sesions,我需要设置:
Session["foo"] //expire in 14minutes
Session["baa"] //expire in 30minutes
我想要解决这个案子,如果可能的话不使用cookies。
提前致谢!
答案 0 :(得分:2)
您可以在Web.config文件中配置会话超时:
<configuration>
<sessionstate mode="inproc"
cookieless="true"
timeout="14" />
</configuration>
这是ASP.NET的默认模式(InProc)。正如rockinthesixtring在他的评论中所说的那样,你不能为会话中的单个对象配置超时,只能配置整个会话。
答案 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>