• 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ

Asp.net 中 Session_End 事件为何不执行啊!!!请高手指点

ylh1223 2004-05-14 10:12:11
我把iis中的session 超时时间设置为 2分钟:但过了很久都没反应呀。
Global.asax文件中:
protected void Session_End(Object sender, EventArgs e)
{

}
为何不执行呀!
...全文
67 点赞 收藏 9
写回复
9 条回复
ylh1223 2004年05月14日
我用了Session.Abandon啊,但是session_end有时候会执行,有时候又不会,不知道是不是iis的问题。
回复 点赞
hychieftain 2004年05月14日
Session timeout 不定很经常!所以一般用Session.Abandon
回复 点赞
ylh1223 2004年05月14日
to hychieftain(不同): 可是我把 session timeout 设置为2分钟, 然后我等了几个小时也不会执行呀!
回复 点赞
hychieftain 2004年05月14日
session_end会有延迟,默认为20分钟,因为服务器端并不知道客户端是否已经关闭了浏览器,只能根据超过延迟时间未有浏览动作来判断他的SESSION已经END。
回复 点赞
hychieftain 2004年05月14日
超时应该会触发,但在ASP.NET里时常不触发,不知是不是MS的bug

示例代码
try (not always work, since the user can go to another site):

<script language=javascript>
function window.onunload()
{
if (event.clientX < 0 && event.clientY < 0)
window.open("logout.aspx", "logout");
}
</script>

in logout.aspx:
<% Session.Abandon() %>
回复 点赞
ylh1223 2004年05月14日
服务器session 超时不触发这个事件吗?
回复 点赞
hychieftain 2004年05月14日
在相关的ASPX页面,增加
<% Session.Abandon() %>
回复 点赞
hychieftain 2004年05月14日
使用Session.Abandon方法

回复 点赞
hychieftain 2004年05月14日
First of all, Session_End event is supported only in InProc mode. In order for Session_End to be fired, your session state has to exist first. That means you have to store some data in the session state and has completed at least one request.
回复 点赞
发动态
发帖子
.NET技术社区
创建于2007-09-28

4.9w+

社区成员

66.8w+

社区内容

.NET技术交流专区
社区公告
暂无公告