一. 内容
1. Session池,键值对。
2. Session也是context对象里的,Page类中封装,更方便访问。
3. Session机制
(1)SessionId用Cookie的方式发送到浏览器端。格式类似于,Set-Cookie:SessionId=101,Cookie以浏览器缓存方式存储,浏览器关闭SessionId则会消失。
(2)Session信息存在Cookie中,所以本质上还是对Cookie的使用,如果浏览器禁用Cookie,Session则不发挥作用。
(3)为了防止禁止Cookie导致Session失效,.NET可以在configur中配置(<sessionState cookieless="AutoDetect"></sessionState>),服务器可以通过URL将SessionId传给浏览器。
(4)Session机制是.NET框架自己实现的,不是HTTP协议里面的东西。PHT,JAVA也都是自己实现Session机制的。
4. Session的使用和销毁
(1)Session.Abandon(),销毁服务器端的Session对象。(可以作用于“退出”功能的实现)
(2)Session.Clear(),清空服务器端的Session对象里的键值对,Session对象并没有从Session池中销毁。
(3)凡是要访问Session对象的页面,必须实现IRequiresSessionState接口,给该页面类贴上标签。
(4)销毁之后,SessionId还存在于浏览器端的Cookie中,浏览器还是会发送SessionId给服务器端,只不过在服务器端中的Session被销毁了。
二. 源代码