关于Session_End事件的调用

本文转自: 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事件,如果您认真分析了前两个的分析,第四个我想您自己已经可以分析了!点都断了,服务器都不运行了,它还能执行什么事件??这问的也有点太过分了吧

你可能感兴趣的:(Session_End)