在做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="datasource=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(); 这样的方法将是最直接,最及时的SessionEnd处理!

.net session_end的更多相关文章

  1. ASP.NET关于Session_End触发与否的问题

    项目背景: 要求开发一个篆文识别网站,由于之前做好了WinForm的,把系统直接移植到WebForm上就好.工作比较简单,但确实遇到不少问题. 核心问题是: 篆文识别涉及到用户对原始图片的预处理(例如 ...

  2. Why is HttpContext.Current null during the Session_End event?

    Why is HttpContext.Current null during the Session_End event? On Session_End there is no communicati ...

  3. ASP.NET MVC开发日常一:SessionID合理清除

    在MVC Web开发中临时存储数据一般会用到Session,Cookie,ViewBag,ViewData,TempData.每个的使用场景是不同,具体区别有空再补上. Session数据最敏感,最需 ...

  4. Java进击C#——应用开发之Asp.net MVC

    本章简言 上一章笔者讲到关于Asp.NET的知识点.了解Asp.NET基本的知识点之后,我们在来学习关于C#的MVC框架就简单多了.显然本章就是来介绍一下关于Asp.NET MVC.对于MVC的思想笔 ...

  5. ASP.NET的六大内置对象

    ASP.NET 六大内置对象(System.Web.UI.Page类): 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cooki R ...

  6. .Net环境下的缓存技术介绍 (转)

    .Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1         概念 ...

  7. asp.net mvc 权限过滤和单点登录(禁止重复登录)

    1.权限控制使用controller和 action来实现,权限方式有很多种,最近开发项目使用控制控制器方式实现代码如下 /// <summary> /// 用户权限控制 /// < ...

  8. MVC5知识点记录

    IIS/ASP.NET管道 原理永远是重中之重,所以在开篇的地方,先了解一下地址栏输入网址回车之后的故事. 不同IIS版本处理请求也不一样 IIS5 IIS 5.x 运行在进程InetInfo.exe ...

  9. asp.net Application、 Session、Cookie、ViewState、Cache、Hidden 的区别

    这些对象都是用来保存信息的,包括用户信息,传递值的信息,全局信息等等.他们之间的区别: 1.Application对象 Application用于保存所有用户的公共的数据信息,如果使用Applicat ...

随机推荐

  1. python之初体验

    1. Python简介: Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明, ...

  2. eclipse中egit插件使用

    这篇文章当时制作有点粗糙,建议阅读升级版:eclipse中egit插件使用--升级版 使用git作为项目的代码管理工具现在是越来越火,网上有各种各样的文章.博客.讨论,其中以命令行居多.使用eclip ...

  3. Google C++单元测试框架---Gtest框架简介(译文)

    一.设置一个新的测试项目 在用google test写测试项目之前,需要先编译gtest到library库并将测试与其链接.我们为一些流行的构建系统提供了构建文件: msvc/ for Visual ...

  4. vim vundle 安装Base16 Vim主题

    1.vim /etc/vimrc set background=dark colorscheme base16-default 2.同样在vimrc中的vundle位置添加 Plugin 'chris ...

  5. RMAN-06023: no backup or copy of datafile 1 found to restore

    在ORACLE 10g数据库还原过程遭遇RMAN-06023: no backup or copy of datafile x found to restore,具体情况如下所示 .......... ...

  6. postfix与sendmail冲突

    在Linux服务器(CentOS release 6.6)上配置好了sendmail后,测试发送邮件时发现有问题,检查sendmail服务的状态,发现其处于"sendmail dead bu ...

  7. webForm(三)——三级联动

    三级联动 首先附图一张,初步认识一下什么是三级联动:                           注:选第一个后面两个变,选第二个,最后一个改变. 其次,做三级联动需要注意的方面:①DropD ...

  8. Java 流(Stream)、文件(File)和IO

    Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序 ...

  9. SQL Server 2008 R2——软件创建月表时同时创建一个触发器

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  10. MySQL有关Group By的优化

    昨天我写了有关MySQL的loose index scan的相关博文(http://www.cnblogs.com/wingsless/p/5037625.html),后来我发现上次提到的那个优化方法 ...