• .net session_end


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

  • 相关阅读:
    用strings命令查看kafka-log内容 过滤二进制编码
    Kafka+Storm+HDFS整合实践
    kafka 在阿里云部署
    oracle中的类似BIN$MrkCYT9eTTK+0sStMwn7+Q==$0的表的作用
    Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法
    ORACLE分区表删除分区数据
    graylog 市场
    三种方法解决 Failed to start LSB: Bring up/down networking 问题
    【项目积累】对JSON数据的处理
    【CTO俱乐部研修班开课】看板先驱David J. Anderson:看板核心在于创造一种能力——提升敏捷性
  • 原文地址:https://www.cnblogs.com/xdot/p/5435052.html
Copyright © 2020-2023  润新知