zoukankan      html  css  js  c++  java
  • .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处理!

  • 相关阅读:
    vue part1 基础
    【转载】NBU异机恢复oracle
    【转载】跨域请求
    [转载] django contenttypes
    rest_framework setting
    rest_framework 视图/路由/渲染器/认证授权/节流
    【转载整理】 mysql百万级数据库分页性能
    rest_framework 分页
    rest_framework 序列化
    django middleware
  • 原文地址:https://www.cnblogs.com/xdot/p/5435052.html
Copyright © 2011-2022 走看看