本文转自:
http://hi.baidu.com/zfy0921/blog/item/b977b93fa5ee063771cf6c30.html
关于 Session_End 事件
2009-11-26 14:57
出自程序人生的一篇文章,首先是关于Session_end的问题,问题如下:
1.关闭浏览器是否执行Session_End事件
2.当IIS重起时是否执行Session_end事件
3.当服务器重起时,是否执行Session_end事件
4.当主机突然断电时,是否执行Session_End事件
下面我们来分析一下Session_End事件:
首先Session_end事件时全局的应用程序级的事件,在global 文件中的声明如下:
void Session_End(object sender, EventArgs e)
{ ////执行代码 }
首先当我们直接把浏览器关闭之后,这个事件是不可能执行的,本身Session_End就是服务器级别的事件,
那么关闭浏览器是肯定不会执行Session_end事件的,这根本就是两个不相关的东西,所以不应该将他们牵扯在一起。在这个地方我想说一点,在很多时候我们将服务器端和客户端进行分离开来分析的话,可能会让问题已目了然!我接触过几个朋友,让我很吃惊的是,他们做了几年的编程,但是有时候还将服务器端事件和客户端事件进行混淆,这点也是让我很无奈的地方!
第二:当IIS重起时是否执行Session_end事件,对于这个问题我想从IIS服务上来说起,虽然global文件里的是全局方法,但是它也是依赖于应用程序的,而IIS也有其处理应用程序的一套解决方案,相对于global里的事件来说,IIS服务也是global的一个服务器端。IIS重起无非就是将IIS的一些列服务先进行关闭,然后再重新启动,那么来说服务器端重新启动,就会释放掉它所持有的所有资源,当然包括应用程序所占用的一切资源!也就是说IIS直接操作的是应用程序所占用的资源,而不是去执行应用程序里的方法,所有当IIS重起时是不会执行Session_end事件的!
第三:当服务器重起时,是否执行Session_end事件,对于这个问题,我们只能从服务器重起是怎么回事说起,大家都知道,当我们关闭服务器之时,首先肯定是要先终止正在运行的所有服务,当然了IIS服务也肯定在其中,那么服务器重起跟IIS重起,对于Session_End来说应该是一回事!
第四:当主机突然断电时,是否执行Session_End事件,如果您认真分析了前两个的分析,第四个我想您自己已经可以分析了!点都断了,服务器都不运行了,它还能执行什么事件??这问的也有点太过分了吧
分享到:
相关推荐
Oracle 数据库提供了大量的动态性能视图(Dynamic Performance Views),其中 `V$SESSION` 和 `V$SESSION_WAIT` 是两个非常重要的视图,它们能够帮助数据库管理员深入了解当前会话的状态以及等待事件的信息。...
#### 为何调用Session.Abandon时未触发Session_End事件? `Session_End`事件只支持`InProc`模式下的Session。如果应用了其他模式如`SQL Server`或`State Server`,那么即使设置了`Session_End`事件,系统也不会自动...
这个错误意味着在调用 `session_start()` 函数之前,已经有一些输出被发送到浏览器,导致无法设置会话缓存限制器,进而无法正常启动会话。 错误的根本原因是 PHP 在发送 HTTP 响应头之前不允许有任何输出,包括空格...
Session_OnStart 事件是在 Session 对象开始前调用的,而 Session_OnEnd 事件是在 Session 对象结束后调用的。 Session 对象可以存取信息,包括变量或字符串信息和数组信息。存取变量或字符串信息的语法是:Session...
4. **清除特定的Session变量**:如果使用`Session.Remove(sessionVar)`来移除某个Session变量,那么仅该变量会被清除,而不会触发`Session_End`事件。这意味着其他的Session变量仍然存在,并且可以继续使用。 #### ...
2. Session_OnEnd:Session_OnEnd 大事在会话被放弃或超时发生。 Session 对象的用法 Session 对象最常见的作用就是存储用户的首选项。例如,假如用户指明不喜爱查看图形,就可以将该信息存储在 Session 对象中。...
理解Session ID的工作原理对于解决如`Session_Start`和`Session_End`事件触发问题至关重要。 总的来说,理解和正确使用Session是构建动态、状态感知的ASP.NET应用的基础。合理地管理Session可以提高应用程序的性能...
而`Session_End`方法在Session结束时被调用,这里我们对Application加锁,检查并减少在线人数。如果用户直接关闭浏览器,Session会立刻结束,`Session_End`就会执行,从而减少在线人数。如果此时在线人数小于0,我们...
在这个文件中,我们可以定义一些方法来响应应用程序的生命周期事件,如`Application_Start`、`Application_End`、`Session_Start`和`Session_End`等。 #### 实现统计功能 ##### Application_Start 事件 在应用...
而当用户离开或会话过期时,`Session_OnEnd`事件会被调用,此时应减少在线用户计数并更新在线用户列表。 #### 3. 字典数据结构的应用 - Scripting.Dictionary 为了高效地管理和检索在线用户,`Scripting....
- 当用户离开页面或会话超时时,需要清除这个标识,可以利用Global.asax文件中的Session_Start和Session_End事件来处理。 - Session_Start事件会在用户首次访问网站时触发,此时设置Session标识。 - Session_End...
在Global.asax中,我们可以利用`Session_Start`和`Session_End`事件来跟踪用户的活动。当用户打开网站时,`Session_Start`事件被触发,我们可以在此处记录一个用户在线的标记。同样,当用户关闭浏览器或会话超时时...
请注意,一旦会话结束或者`Session.Abandon()`被调用,这些数据将被清除。 四、会话超时与配置 默认情况下,ASP.NET会话的超时时间为20分钟。你可以在Web.config文件中修改这个设置: ```xml <sessionState mode...
当`session_start()`被调用时,它会自动发送一个名为`Set-Cookie`的HTTP头,该头告诉浏览器存储一个名为`PHPSESSID`的Cookie,其值为当前用户的会话ID。如果在`session_start()`之前有任何输出,会导致`Set-Cookie`...
Global.asax.cs特殊事件: Application_Start 网站启动时候触发,只执行一次 Application_End 网站关闭时候触发,只执行一次 Session_Start 创建session时候触发 Session_End 销毁session时候触发 Application_Error...
2. **Session_OnEnd()**:当Session结束或被废弃时,此事件会被调用,可以进行清理工作。 使用Session的主要方式是创建和访问Session变量。例如,你可以通过`Session("变量名") = 值`来设置Session变量,然后在其他...
3. **Session_OnEnd**:当用户的会话结束时触发,可能是由于会话超时、用户关闭浏览器或者显式调用Session.Abandon()。在这个事件中,你可以清理与会话相关的资源,如清除会话数据或记录会话信息。 4. **...
在这个例子中,`login`函数负责验证用户身份并创建会话,`check_session`函数检查会话是否过期,`handle_request`函数处理每个HTTP请求并调用`check_session`。注意,实际环境中,会话通常存储在数据库或内存缓存中...