您的位置:首页 > 其它

关于Global.asax中的Session_End

2008-05-23 09:06 302 查看
在练习使用ASP.NET, 想要实现记录在线访问人数的功能时想到了Global.asax文件。于是试着使用其中的Session_Start和Session_End。发现每当有新用户访问时,Session_Start中的代码总能被执行,而Session_End中的就得不到执行。也像下面这样设置了Web.Configue文件: <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" sqlCommandTimeout="30" customProvider="" cookieless="UseCookies" cookieName="ASP.NET_SessionId" timeout="2" allowCustomSqlDatabase="false" regenerateExpiredSessionId="true" partitionResolverType="" useHostingIdentity="true"> <providers> <clear /> </providers> </sessionState>

如果按照设置来说,

至少应该在Session过期(2秒钟)的时间,执行Session_End中的代码,把在线人数-1.

但是却发现关闭浏览器之后等2秒钟,是不行的,要是等上几分钟,倒是可以。

不知道何解。

想到了一个折中的办法,

把母板页上加入了退出按钮,里面执行Session.Abandon() 方法

但是怎么样才能让用户关闭了浏览器,断开了和网站的联系,并且Session一过期,就执行Session_End里的代码呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: