首页 > 编程 > .NET > 正文

ASP.NET中如何实现同一时间只有一人能够修改系统数据

2024-07-10 13:06:37
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 有些特殊的系统中,要求同一时间,只能有一个人能够修改系统数据,这时其他人修改数据时,处于“锁”的状态,只有修改数据的人退出时其他人才可进行修改操作。

    我们通过设置一个全局开关变量(application),当第一个用户修改数据时,将该变量至为一个表示锁状态的值(例如lock),其他用户要修改数据前,检查是否能够修改,通常一下几种情况将该修改权释放(将变量置为unlock)
    1.修改数据的用户退出系统
    2.修改数据的用户长时间不操作
    3.修改数据的用户关闭ie

    第一种情况,我们可以通过用户点击“退出”按钮时处理;

    第二种情况,用户长时间不操作我们可在session_end事件中处理,具体这个时间长度可以在web.config中设置
    (session_end事件的触发条件,session.abandon()或长时间未操作都能够触发该事件)

    第三种情况,用户关闭ie,如果不处理这种情况,其实并不是application对象永远处于锁的状态,ie关闭后session_end事件依然能够触发,也就是系统将一直等到session_end事件触发时才能释放该资源,但是这样不是很好,如果触发session_end事件的时间是1小时...此种情况我们可以在页面中下入javascript,当用户关闭页面时,跳转到一个处理退出的页面,处理完毕后马上自动关闭。
    function window_onunload() {
    {
      if (event.clientx < 0 && event.clienty < 0)
     window.open('logout.aspx','','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,top=2000,left=2000,width=0,height=0');
    }
    我们在logout.aspx页面中将application变量解锁

    这个问题在一些其他的应用中也同样存在,例如网站的实时在线用户列表

     

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表