简说Session
来源:互联网 发布:软件验收单模板 编辑:程序博客网 时间:2024/04/30 12:41
说Session大家都知道也都用过(做asp.net我遇到过没用过Cookies的,还没遇到过没用过Session的),Session的保存方式默认是在内存中,更确切的说是在
asp.net的进程中,这种方式是默认的保存方式即InProc方式,在web.config里面可以进行配置。这种方式由于和应用程序在同一进程中,所以有时会发生丢失的
情况。有没有解决办法呢?答案是有的。
一般常用的Session保存方式还有StateServer和SQLServer,StateServer是一个单独的进行,较之InProc要稳定的多。而SQLServer则是可以持久的保存Session。
还有一个平时大家都说关闭浏览器Session便会丢失,其实不是这样的。Session都是有个超时时间的(TimeOut),因为Web本身就是无连接的。服务器怎么可能知道客户关闭了浏览器?即而怎么可能随之关闭Session,下面讲一下为什么表面上浏览器关闭了Session就会“丢失”。Session在服务器上是以散列表结构保存的,并且每个会话Session服务哭都会生成一个唯一ID,又名SessionID。而自定义的Session 键值是以哈希表形式存储在相应的SessionID下面的。比如
用户A
SessionID:goly4y550qfsmy554cm3k155
Key:LoginOK Value:true
Key:UserName Value:春哥
用户B
SessionID:v4h40355mnhk3k451nfibj55
Key:LoginOK Value:true
Key:UserName Value:曾哥
从上面的例子就可以看出为什么用户A登录后的 Session[“UserName”]是春哥,而用户B登后的Session[“UserName”]是曾哥了。
话接上题,因为每次会话请求都会生成一个新的唯一的SessionID,所以当关闭浏览器的时候,当前的SessionID还是存在于服务器上的,Session并没有丢,但是重新又建立请求时又生成了新的SessionID所以以前的Session当然是取不到的了。(IE8打开页面A后再打开页面B是同一个SESSIONid,所以会发生双开覆盖用户信息的问题。可以通过文件-新会话页面方式开启新的会话页面。而IE7以下不会这样情况)。
最后说一下基本上Session不能共享也是因为这样的原因即每个请求都会是一个新的会话SessionID。
原文请来这里。
- 简说Session
- 先说session
- 简说Session(给不知道的人说的)
- 我来说说 监控 oracle session
- 事务简说
- JDBC简说
- 简说Pinterest
- C#:简说using
- XMPP协议简说
- 简说Hadoop。
- HTML-CSS简说
- mysql事物简说
- 字符编码简说
- 简说mvc路由
- kali linux简说
- 说
- 说
- 说
- 国际化
- 关于程序员群体的健康问题
- linux下用tar进行数据备份
- [图说]舍命不舍球瞬间:罗德曼雷人 科比人仰马翻 - Qzone日志
- JS屏蔽网页中的错误提示信息
- 简说Session
- SEH stack 结构探索(5)--- __exception_handler4() 探秘3之 TryLevel
- 五大数据库常用SQL比较(一)
- PHP与C++通信,发送整型数据。
- VC 右键弹出菜单
- Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别
- 淘宝阿里巴巴上演去Oracle事件
- python 读取excel表格并写入sqllite数据库
- Hadoop RPC源码分析