假如我们用.net c# 基于session(非cookie)
HttpContext.Current.Session[AccountKeyPrefix] = value;
做一个网站,特别是一个后台,如果长时间不登录,时不时要登录是多么的烦。
在网上找了很多资料,讲得最典型的无非两个方面:
1、设置web.xml
<configuration>
<system.web>
<sessionState mode="InProc" timeout="80000"/>
</system.web>
<configuration>
大部分资料都是这么说的,比如:
sessionState mode = "InProc" 这种方式不安全,相当于把session交给IIS的进程管理,IIS的不稳定性将导致Session频繁丢失。
sessionState mode="StateServer"是建立独立的Session的服务进程管理方式模式,不受IIS的进程本身的不稳定影响,不容易导致session丢失,可以实现多个asp.net的站点的session 共享。
<sessionState mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
sqlConnectionString="sql connection string"
stateNetworkTimeout="number of seconds"
/>
意思是就是把站点托管到IIS,或者保存到状态服务器或者数据库。
但是!这个
timeout="80000"
的单位是秒!这是重点,很少人说到的。
另外,当mode="InProc"时,还要配合IIS设置使用,不然根本就没有效果!
还有一个地方
这个里面的超时,也要设置