Session.Abandon-Session.Clear-Session.RemoveAll

System.Web.UI.Page.Session属性和System.Web.HttpContext.Session属性 都是System.Web.SessionState.HttpSessionState类

这三种方法都可以清除session.

Session.Clear()和Session.RemoveAll()是完全一样的,即Clears all values from the session-state item collection.

Session.RemoveAll()内部就是调用了Session.Clear()

源码

// System.Web.SessionState.HttpSessionState
/// <summary>Removes all keys and values from the session-state collection.</summary>
public void RemoveAll()
{
    this.Clear();
}

以上两种方法和Session.Abandon()是有区别的。

以上两种方法,只是清空了键值集合,而Abandon是Ends the current session.意味着Session对象被销毁destroyed,当然其保存的键值集合也会同样消失...

InProc模式下abandon方法会引发Session_End事件

Once the Abandon method is called, the current session is no longer valid and a new session can be started. Abandon causes the End event to be raised. A new Start event will be raised on the next request.

Abandon方法调用后,不是马上销毁,而是等待剩下的脚本执行完毕,因此仍在在随后的代码中被访问,但是本次请求完毕,随后的请求就无法继续访问到了

When the Abandon method is called, the current Session object is queued for deletion but is not actually deleted until all of the script commands on the current page have been processed. This means that you can access variables stored in the Session object on the same page as the call to theAbandon method but not in any subsequent Web pages.

<%
  Session.Abandon
  Session("MyName") = "Mary"
  Reponse.Write(Session("MyName")) //本次请求仍然有值
%> 

新的请求将会创建新的Session对象,虽然仍然存储相同的键值,例如

Session("MyName") = "Mary" ;

,但是这个Session已经是新对象了

另外,如果inproc模式下,设置的时间超时,会自动调用Abandon方法

The Abandon method destroys all the objects stored in a Session object and releases their resources. If you do not call the Abandonmethod explicitly, the server destroys these objects when the session times out.

https://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx

时间: 2024-10-25 03:47:31

Session.Abandon-Session.Clear-Session.RemoveAll的相关文章

Session.Abandon和Session.Clear的区别

1.Session.Clear()就是把Session对象中的所有项目都删除了,Session对象里面啥都没有.但是Session对象还保留. 2.Session.Abandon()是摧毁该用户的所有session值.但是,在session.abandon()所在的页面,仍然可以调用该用户的session值.

session.abandon()和session.clear()的异同

session.abandon()和session.clear()的异同 Session.Clear()就是把Session对象中的所有项目都删除了, Session对象里面啥都没有.但是Session对象还保留.Session.Abandon()就是把当前Session对象删除了,下一次就是新的Session了. 主要的不同之处在于当使用Session.Abandon时,会调用Session_End方法(InProc模式下).当下一个请 求到来时将激发Session_Start方法.而Sess

Session.Abandon与Session.Clear之间的区别

Session.Clear()就是把Session对象中的所有项目都删除了,Session对象里面什么都没有.但是Session对象还保留. Session.Abandon()就是把当前Session对象删除了,下一次就是新的Session了. 主要的不同之处在于当使用Session.Abandon时,会调用Session_End方法(InProc模式下).当下一个请求到来时将激发Session_Start方法.而Session.Clear只是清除Session中的所有数据并不会中止该Sessi

转:客户端session与服务端session

会话(Session)跟踪是Web程序中常用的技术,用来 跟踪用户的整个会话 .常用的会话跟踪技术是Cookie与Session. Cookie通过在客户端记录信息确定用户身份 , Session通过在服务器端记录信息确定用户身份 . 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session. 1.1  Cookie机制 在程序中,会话跟踪是很重要的事情.理论上, 一个用户的所有请求操作都应该属于同一个会话 ,而另一个用户的所有请求操作

转:通过Spring Session实现新一代的Session管理

长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新. 但是,现代的趋势是微服务以及可水平扩展的原生云应用(cloud native application),它们会挑战过去20多年来我们设计和构建session管理器时的前提假设,并且暴露了现代化session管理器的不足. 本文将会阐述最近发布的Spring Session API如何帮助我们克服眼下session管理方式中的一些不足,在企业级Ja

【翻译自mos文章】找到&#39;cursor: pin S wait on X&#39; 等待事件的阻塞者session(即:持有者session)

找到'cursor: pin S wait on X' 等待事件的阻塞者session(即:持有者session) 来源于: How to Determine the Blocking Session for Event: 'cursor: pin S wait on X' (Doc ID 786507.1) 适用于: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.3 [Release 10.2 to 11.2

tomcat原理及安装及反向代理、会话保持、session集群和session共享服务器的实现(一)

JDK(java development kit)叫做java开发工具包,是整个java的核心,包括JRE(java runtime environment,叫做java运行是环境),一堆java的工具和java的基本类库. JDK包含的组件包括: javac:编译器,将源程序转换成字节码,即.java程序转换成.class文件,然后才能java虚拟机上运行.class文件 jar:打包工具,将相关的类文件打包成一个文件 javadoc:文档生成器,从源码注释中提取文档 jdb:debuger,

session.cookie.lifetime和session.gc.maxlifetime的关系

session.cookie.lifetime session.cookie.lifetime 默认是0,即浏览器关闭,session失效:修改这个值的作用是修改sessionid以cookie的形式保留在浏览器的时间长度,也就是说这个值设置一个小时,名为sessionid的cookie就保留在浏览器一个小时,session一个小时后才过期: session.gc.maxlifetime session.gc.maxlifetime是指设置session最大的过期时间,指php按照一定的几率 执

Spring Session + Redis实现分布式Session共享

通常情况下,Tomcat.Jetty等Servlet容器,会默认将Session保存在内存中.如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案.但是这种方案有一个缺点,就是不利于扩展. 目前越来越多的应用采用分布式部署,用于实现高可用性和负载均衡等.那么问题来了,如果将同一个应用部署在多个服务器上通过负载均衡对外提供访问,如何实现Session共享? 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session

MySQL中Global、Session和Both(Global & Session)范围

1. Global & Dynamic example:slow_query_log ?  显示该变量的值: 当前设置为OFF ?  在一个session中设置该Global &Dynamic类型的变量: 可以看到,对于global类型的变量必需通过global关键字来设置其值. ?  在同一个session中重新查看该变量的值: 发现该变量值已经发生了改变. ?  通过另外的session来查看该变量的值: ü  该session在改变变量值时已存在 ü  该session在改变变量值时