刚做了一个人才网站,.net(C#)的,现在系统要求每个帐户同时只能登陆一个人,那么我怎样实时的知道某个帐号是否已经登陆呢?希望各位大哥大姐赐教!谢谢!

解决方案 »

  1.   

    Application 提供对所有会话的应用程序范围的方法和事件的访问。还提供对可用于存储信息的应用程序范围的缓存的访问。
    ------------------------------------
    代码:从应用程序状态读取值 (Visual Basic)请参见
    代码:在应用程序状态中保存值 (Visual Basic) | 应用程序状态 | Web 窗体状态管理介绍 | 状态管理建议 | ASP.NET 状态管理 | Web 应用程序示例主题
    本示例从 HttpApplicationState 对象检索值。示例
    Dim appMsg As String
    appMsg = Ctype(Application("Message"), String)
    编译代码
    本示例需要: 一个 Web 应用程序。 --------------------------------------------------------
    代码:在应用程序状态中保存值 (Visual Basic)请参见
    代码:从应用程序状态读取值 (Visual Basic) | 应用程序状态 | Web 窗体状态管理介绍 | 状态管理建议 | ASP.NET 状态管理 | Web 应用程序示例主题
    本示例使用 HttpApplicationState 类保存全局信息。示例
    Application("Message") = "AppMsg"
    Application("AppStartTime") = Now
    编译代码
    本示例需要: 一个 Web 应用程序。 ----------------------------------------------c#这里没有给出例子,但是道理相同 
      

  2.   

    另外还有一种方法,就是定义一个static变量
    static变量是所有访问该页面的用户共享的,在这里面存储所有登陆用户的id,
    在其他用户登陆的时候就可以根据这个static变量进行判断
      

  3.   

    当用户登录时,需要更改Application或者static变量,当用户退出或者用户关闭页面时再次更改数据
      

  4.   

    这时有两种方法:
    1、在数据库对账户表设置一个标记(例如Flag),然后在用户登录后对该变量设置为1,并更新数据库中,用户退出是对该变量设置为0,并更新到数据库中,当另一个人用同样的账号登录时,对该变量判断。
    2、当用户登录后用Session变量保存用户信息,同样用变量(Session("Flag")=1),当另一个人用同样的账号登录时,对该变量判断。退出就不用了,因为这是Session的功能。楼主可以考虑一下!个人意见,仅供参考!
      

  5.   

    是啊,我是想知道,如果用户客户端那里关闭窗口的话,我服务器端怎样知道呢。怎样把记录所有登陆id的那个表里边的这个id给清除掉呢
      

  6.   

    session在关闭该工程的最后一个页面时会自动关闭。服务器应该能自动判断。
      

  7.   

    回复人: kflash(狂闪工作室) ( ) 信誉:100  2005-01-15 16:06:00  得分: 0  
     
     
       session在关闭该工程的最后一个页面时会自动关闭。服务器应该能自动判断。
      
     
    ----------------------
    有具体判断session 已关闭的方法么
      

  8.   

    if(session.Count == 0)Page.Response.Redirect("default.aspx");
      

  9.   

    谢谢大家,session end 搞定
      

  10.   

    用session可能会有不稳定的时候,特别是服务器资源不够需要回收的时候这个时候session可能会部分丢失或清空。我以前做过一个项目,记得是在关闭某一重要窗口的时候调用客户端脚本window.onclose打开另一个页面(1X1大小,窗口关闭时间1秒,这样客户端的感觉几乎是一闪而过),在这个页面里面写session end等业务逻辑,这样子相当安全。