本帖最后由 chenhui 于 2012-11-12 15:13 编辑
1、其实Session在服务器端就是一个字典集合,不同浏览器、同一种浏览器的不同窗体所创建的session对象会放在session池中,而Session池也是一个字典集合,是以SessionId为键,以Session对象为值的集合,而SessionId会以cookie的形式发回浏览器,而此时的Cookie是保存在浏览器内存中的。
2、当用户登录后,将用户名存入Session,并产生一个SessionId返回给浏览器,当另一个用户用相同的浏览器的同一个窗口登录时,服务器先根据发过来的SessionId找到
该对象,然后将另一个用户的用户名存入Session中,从而覆盖了上次的值【Page中的Session属性获取的Session对象是一样的】;
3、 当用户再打开一个不同浏览器或同一个浏览器的不同窗口登 录时,上次打开的IE中产生的SessionId不会传给服务器(因为不同浏览器或同一个浏览器的不同窗口是不同的进程,而不同的进程之间是不能共享内存的,而Cookie是存放在浏览器的内存中的,因此不会将SessionId传回给服务器),而是在服务器端重新创建一个Session对象,返回新得 SessionId给浏览器【不同的浏览器访问时,Page中的Session属性获取的Session对象时不一样的】;
4、不同的浏览器之间不会共享SessionIdF:\学习.net\学习开发网站\网站(.net 2011版)\图片与一些记录\状态保持--Session.png。
|