Session超时后,能否在服务器端执行一些相关的程序?

xjjdanran 2006-06-10 06:01:23
我在Session_End方法中想执行一些相关的数据库操作,怎么无效?
...全文
309 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
FXZF 2006-08-25
  • 打赏
  • 举报
回复
来晚了,不知楼主是否已经解决问题.如果还没解决请发消息给我!^_^
孟子E章 2006-06-11
  • 打赏
  • 举报
回复
首先,配置文件中只有设置了
<sessionState
mode="InProc"
的模式才触发
超时会触发的,估计是你检测的方法有问题
xjjdanran 2006-06-11
  • 打赏
  • 举报
回复
谢谢两位老大。
设置是InProc模式的,我调试过代码,确实是在Session超时时,Session_End事件没有执行。
但如果是点击关闭按钮,服务器端的Session_End事件就执行了,而且执行正常,数据库中的记录也被更新了。
所以,觉得很郁闷。。。
liuqian0415 2006-06-11
  • 打赏
  • 举报
回复
up
lxxxjj 2006-06-11
  • 打赏
  • 举报
回复
楼主,是不是你在Session超时之后,调用过Session.Abandon将其销毁掉了,自然就没有触发Session_End事件
Ivony 2006-06-11
  • 打赏
  • 举报
回复
1、必须是InProc模式
2、Session超时只有在没有任何操作且超过超时时间后才会发生,与客户端一切操作无关。
3、Session.End事件里面如果发生异常虽然会被Application捕获但不一定会输出,一定要自己处理。
4、不能以操作数据库结果判断某个方法是否被执行。数据库操作很可能失败,表述问题一定要详细清楚不允许主观臆断。So,先搞清楚到底是事件没触发还是数据库操作失败。
xjjdanran 2006-06-10
  • 打赏
  • 举报
回复
孟子老大来了,谢谢。
我是这样做的,可经过测试之后,发现只有用户正常关闭浏览器才触发Session_End事件,但如果用户在系统使用中Sessoin超时,不会触发服务器端的Session_End事件。
而且session超时,提示用户重复登陆,关闭当前页面重新打开登陆页面同样也没触发。。。
孟子E章 2006-06-10
  • 打赏
  • 举报
回复
Global.aspx.cs

Session_End事件:
{
string sql="delete From tableName where Session='+ Session.SessionID +'";
打开数据库。。。。执行sql语句

}
xjjdanran 2006-06-10
  • 打赏
  • 举报
回复
怎么沉下去了,有没有人指点一二啊
xjjdanran 2006-06-10
  • 打赏
  • 举报
回复
同末没什么人在线了吗?急着解决这问题呢
xjjdanran 2006-06-10
  • 打赏
  • 举报
回复
难道只有在关闭浏览器时,Session_End事件才会调用?
我想在用户时,如果Session超时之后,清掉数据库中保存的相关Session信息,该如何处理?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧