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 文档或雨痕写的相关文章。

asp.net(c#)有关 Session 操作的几个误区的更多相关文章

  1. C#语法糖之 session操作类 asp.net

    用法: //声名一个数据集合 var listString = new List<string>() { "a", "b", "c&quo ...

  2. ASP.NET MVC之Session State性能问题(七)

    前言 这一节翻译一篇有关Session State性能问题的文章,非一字一句翻译. 话题 不知道我们在真实环境中是否用到了Session State特性,它主要用来当在同一浏览器发出多个请求时来存储数 ...

  3. ASP.NET里的Session详细解释

    Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器建立连 ...

  4. Asp.net Mvc 自定义Session (二)

    在 Asp.net Mvc 自定义Session (一)中我们把数据缓存工具类写好了,今天在我们在这篇把 剩下的自定义Session写完 首先还请大家跟着我的思路一步步的来实现,既然我们要自定义Ses ...

  5. cookie编码乱码问题与cookie禁用后session操作

    Cookie传输的值只能是ASCII码,该编码表相对老旧不含有很多符号与文字 特别是中文,所以在cookie传值过程中需要先转成相应的ASCII编码再解析 如下 URLEncoder.encode(& ...

  6. ASP.NET中的Session怎么正确使用

    Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...

  7. ASP.NET中的Session怎么正确使用[转]

    Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...

  8. ASP.NET会话(Session)保存模式--终于知道session为什么丢失了

    [原创]ASP.NET会话(Session)保存模式 作者:寒羽枫(cityhunter172) 大家好,已有四个多月没写东东啦.今日抽空就说一下 Session 在 .Net v1.0/v1.1 中 ...

  9. 【转】asp.net中利用session对象传递、共享数据[session用法]

    来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...

随机推荐

  1. Genymontion安装

    Genymontion是什么 它提供的是Android的虚拟环境,和sdk的模拟器类似,能够支持windows,liunx,mac等操作系统,他比我们SDK的模拟器快很多,所以也是为什么很多开发人员会 ...

  2. 【HTML XHTML CSS基础教程(第6版)】笔记之HTML XHTML笔记(1~6章)

      第1章 网页的构造块   1.(X)HTML有三种主要的标记类型:元素,属性,值.   2.浏览器主要通过查看文件的扩展名(.htm或.html)来得知应该按照网页的方式读取文本文件.   3.H ...

  3. ASP判断文件地址是否有效

    <% Response.Write("<head><style><!--span{ font-size: 9pt }--></style> ...

  4. SQLSERVER2012用户登录error40

    昨天晚上公司停电了,电脑非正常关闭,今早回来之后,用sa登录sqlserver,一直报error40这个错,以前没碰到过,所以很紧张,问东问西,在网上也搜了好多,也跟着配置了好多,都不行,快被逼疯的时 ...

  5. SQL Server(高级) 关键字的使用 二

    二, 高级 关键字 -- 使用介绍 8,Top 的使用(Top子句返回记录的数目) select top number|percent column_name(s) from table_name 或 ...

  6. glassfish 日志输出配置

    asadmin set-log-levels javax.enterprise.system.tools.deployment=WARNING

  7. java后台正则验证

    public static boolean checkPhone(String phone) { Pattern pattern = Pattern.compile("^[1][3-8]+\ ...

  8. 对比MySQL,什么场景MongoDB更适用

    原文链接: http://page.factj.com/blog/p/4078 MongoDB已经流行了很长一段时间,相对于MySQL,究竟什么场景更需要用MongoDB?下面是一些总结. 更高的写入 ...

  9. 09_控制线程_线程睡眠sleep

    [线程睡眠] 如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态方法sleep()方法来实现. sleep()方法有两种重载形式: 1.static void ...

  10. 删除Windows 文本右键选项

    删除Windows 文本右键选项 在Windows上用所谓的绿色版安装了EditPlus,但是给的卸载程序(即删除掉注册表相应的选项)无法使用,导致只能手动从Regedit(注册表-编辑器)中手动删除 ...