posts - 0,  comments - 20,  trackbacks - 0

原文: http://hi.baidu.com/ooofcu/blog/item/49484b54e1b0e253564e0092.html

由于要作系统日志操作.所以.........调了一下,可以用

       在做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处理!

posted on 2008-12-05 20:56 Documents 阅读(504) 评论(0)  编辑  收藏 所属分类: ASP.NET

只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

留言簿

文章分类

文章档案

J2EE

搜索

  •  

最新评论