asp.net(c#)有关 Session 操作的几个误区
发布时间:2016-12-29 来源:查字典编辑
摘要:1.this.Session["username"]=nullHttpSessionState内部使用NameObjectCollectio...
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.asaxSession_Start事件被触发。你还可以使用this.Session.IsNewSession属性来判断当前Session是否重新创建的。
由于某些组件和控件可能要使用Session信息(如使用this.Session.SyncRoot进行同步),因此不要轻易使用该方法清理Session。
3.用户身份验证
不要使用this.Session["username"]="ZhangSan"、if(this.Session["username"]!=null)这样的方式进行用户身份验证,这种方式既不安全也不合理。有关身份验证请参考MSDN文档或雨痕写的相关文章。