我遇到有关会话超时的问题。如何将用户会话存储1天。如果用户Logout.It不影响用户会话,用户会话将持续一天。
答案 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>