学习session
刚刚学习.net,菜鸟一只 ,希望大家多多关照,有问题留言多多帮助我,谢谢
对于session用法很简单,之前一直用也没理解其工作原理,今天查查资料才对他明白了一点点,写出来
1,可以帮助像我一样的同学,2.留作日后参考,3,很重要(给我留作学习生涯的点点回忆)
begin:
一个session就是我们平常说的一个会话,用法:Session["key"]=value;
key:我们自己给他创建的名称,
value:赋给session的值,
1.当用户创建了一个session时,此sesion的信息会保存在服务器的内存(如果mode=inproc)里,(由于内存有限,所有易丢失就是session特点之一,)
服务端此时发送给客户端一个sessionID来区别于别的用户信息(每个用户的信息都在服务端的session[key]中,sessionid来区别每一个用户),SessionID将保存在客户端的cookie里,
当下一次用户请求时,服务端会检查请求里的sessionid,然后在内存中遍历搜索,如果有将继续操作,如果session[key] = null,说明session已过期,跳转的登录页面,
2.session的过期时间,当设置了session过期时间为10分钟时,此时在服务端将会有一个类似倒计时的东西来计算session的过期时间,如果过了10分用户没有再请求服务器,
这个回话就结束了,也就是session过期了。期间,如果用户不断的发出请求。服务端每次接受到请求时都会重新计算session时间。但发起请求的操作包括但不限于:刷新页面,提交表单,删除添加等。
这段代码就是设置session在web.config中的<system.web>节点下
< sessionState mode="Off|InProc|StateServer|SQLServer" 服务端保存session的位置 //关闭|进程中|状态服务器|数据库
cookieless="true|false" 客户端保存sessionID的位置 false用cookie保存,true用cookieless保存(不要cookie保存的配置下面将会提到,)
timeout="number of minutes" 过期时间,单位分钟,默认20分钟
stateConnectionString="tcpip=server:port" 当mode = stateserver是这个属性是必须的。服务器地址:端口号,
sqlConnectionString="sql connection string" 当mode= sqlserver 是这个属性是必须的
stateNetworkTimeout="number of seconds" 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的
/>
如果那有不正确的地方,希望前辈指正。谢谢