欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net(c#)有关 Session 操作的几个误区

程序员文章站 2022-06-06 23:46:46
1. this.session["username"] = null  httpsessionstate 内部使用&nbs...
1. this.session["username"] = null 
httpsessionstate 内部使用 nameobjectcollection 类型的集合对象来存储用户数据。因此使用 this.session["username"] = null 仅仅是将该元素的值设为 null 而已,并没有真的将其从 session 中移除。(为什么?晕~~~ 建议看看 c# 基础方面的书。) 

正确的方法是:this.session.remove("username"); 
删除全部数据:this.session.removeall(); 或 this.session.clear(); 

2. this.session.abandon() 
该方法会导致当前 session 被取消,系统会触发 global.asax 中的 session_end 事件(仅限于 mode = inproc 时)。 
尽管再次发出请求时 sessionid (可能)没有发生变化,但是你会发现 global.asax session_start 事件被触发。你还可以使用 this.session.isnewsession 属性来判断当前 session 是否重新创建的。 

由于某些组件和控件可能要使用 session 信息(如使用 this.session.syncroot 进行同步),因此不要轻易使用该方法清理 session。 

3. 用户身份验证 
不要使用 this.session["username"] = "zhangsan" 、if (this.session["username"] != null) 这样的方式进行用户身份验证,这种方式既不安全也不合理。有关身份验证请参考 msdn 文档或雨痕写的相关文章。