【转】ASP.NET之 关于触发Global.asax Session_End事件的经验
2009-12-29 09:35
在做asp.net编程开发的时候,我遇见这样的问题,一个用户只能在一台机器上登录,

如果有用户在其他机器上登录,系统将提示该用户已经登录!当前登陆非法!我的做法是:

用Application变量保存已经Login的用户信息,当Session_Start的时候,在Global.asax

文件里写Session_Start事件响应函数,记录登录用户!当用户Logout的时候,在Session_End

事件里,将Application变量中的用户信息做一个休正,即:清除SessionEnd的用户信息。

问题出现了!Session_End无法执行???为什么呢?后来看了几篇文章,做了试验,得出以下

结果,要让Session_End事件响应,需要做以下工作:

首先在web.config文件中需要有以下设置:

<sessionState
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false"
            timeout="1"
    />

Session_End只在mode="inProc"模式下触发,timeout决定该事件的触发时间,

一般情况下,timeout是指Session失效的时间,我在自己设计的asp.net应用系统中,

使用Form校验方式,不需要Session来判断用户是否登录,所以设置timeout=1分钟,

不会影响正常操作,但是如果用户设计的系统使用Session来保存用户登录信息,

设置timeout=1,那么打开浏览器后,当用户在1分钟内不在该浏览器上进行操作,

Session就会失效,这可能导致系统使用的不正常!对于一般用户而言,对着屏幕

看1分钟后,又要重新登陆一次,是个十分恶心的事情!

因此,如果使用Session来保存用户登录信息,建议采用其他方式!

比如在每个Page上做一个onunload事件响应函数,如:oncloseIE(),当浏览器关闭的时候,

oncloseIE()执行,在oncloseIE函数里使用ajax方式,调用后台的server端函数,执行

Session.Abandon(); 这样的方法将是最直接,最及时的Session End处理!

【转】ASP.NET之 关于触发Global.asax Session_End事件的经验相关推荐

  1. Asp.Net中global.asax文件的描述

    global.asax文件的作用: 1.定义Application级别,Session级别的变量,对象和数据: 2.定义在Application中的,基于Application,Session的事件: ...

  2. global.asax文件的作用

    1.Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应  ASP.NET 或HTTP模块所引发的应用程序级别和会话级别事件的代码 2.Global.a ...

  3. ASP.NET中使用Global.asax文件

    转:http://www.cnblogs.com/ly5201314/archive/2008/09/23/1296868.html ASP.NET中使用Global.asax文件 Global.as ...

  4. 在ASP.NET中使用Global.asax文件

    文章关键字:ASP.Net,应用层,模块 概述 Global.asax 位于应用程序根目录下.虽然 Visual Studio .NET 会自动插入这个文件到所有的 ASP.NET 项目中,但是它实际 ...

  5. 使用ASP.NET Global.asax 文件

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  6. Asp.net中Global.asax

    Asp.net中Global.asax Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序 ...

  7. 【ASP.NET】Global.asax与Web.config

    背景 在创建网站的项目,总是会看到Web.config这个文件,它是用来干什么的呢?还有咱们自己也可以新建Global.asax文件,它是用来干什么的呢.在我实现一个网页上显示历史访问人数和在线人数的 ...

  8. ASP.NET Global.asax详解

    最近在研究bbsmax的代码,但是一直不知道入口在哪里,然后就对各个文件分析了,然后终于在对global.asax文件查看的时候看到Application_BeginRequest才明白入口,所以现在 ...

  9. ASP.NET通过Global.asax和Timer定时器定时运行后台代码

    ASP.NET通过Global.asax和Timer定时器定时运行后台代码 Global.asax文件 1.Application_Start方法添加     // 在应用程序启动时运行的代码     ...

最新文章

  1. Axure8.0 网页 or App 鼠标滚动效果
  2. Training的第六天
  3. 递推水题 Codeforces Round #289 (Div. 2, ACM ICPC Rules) A. Maximum in Table
  4. AngularJS自定义表单验证
  5. java object 比较_Java比较两个对象
  6. Linux(centos7)安装nginx并配置代理
  7. 判断出栈序列是否合法(c语言实现)
  8. ng的link和comepile
  9. 2020年十大币预测_2020年十大商业智能工具
  10. mysql 入门 jdbc
  11. Debian 10(buster) 更换国内软件源
  12. php动态柱形图,php生成柱状图(统计图)程序
  13. 登录图片滑动验证实现
  14. 设计专用黑苹果台式机9代intel平台I59500+微星b360m mortar+蓝宝石rx560
  15. android studio smail变量值,Android Studio + smalidea进行smail动态调试
  16. 为什么要进行网站流量分析?从6个方面告诉你答案
  17. 五种“网络钓鱼”实例解析及防范技巧(转)
  18. 简单理解网络分层模型--向计算机网络迈一小jio;还会有后续;
  19. IBM X 345服务器无法从光驱启动配置解决方法——非常规方法
  20. 计算机图片怎么截图快捷键,电脑截图快捷键四种截屏方式,笔记本电脑如何截屏截图?...

热门文章

  1. c#Struts框架理念和自制Struts框架下 复杂版
  2. XML Web Service 安全性
  3. HD 1159 Common Subsequence (最长公共子序列)
  4. 使用QSerialport读取串口数据并处理
  5. 做中间件的这两年总结(201704-201905)
  6. Vue入门:Vue项目创建及启动
  7. python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...
  8. OPCDAAuto.dll的C#使用方法浅析(转载)
  9. Image and video pencil sketch with OpenCV 3.X and CUDA
  10. C++ GUI Qt4编程(12)-6.1FindFileDialog