在判断用户非正常退出的情况下,想到了sessionId的读取问题。前段时间发了个贴,关于session.timeout的问题,链接:http://topic.csdn.net/u/20110815/09/f8e8f48f-f320-46ae-a8b5-d4b7bd9a0b15.html。得到net_lover
达人的回答,明白了很多。我现在所了解的是在Session_Start事件里面你必须把Session.SessionID存入数据库。但是,我的程序在最开始的时候,在Session_Start中给Session["userId"]付了初值。Session["userId"]=null,因为,在最开始的时候,用户还没有登录,server也不会产生SessionID的。那么SessionID应该是在用户登录后服务器才分配的。这个时候我应该如何处理SessionID,把SessionID存入数据库中。

解决方案 »

  1.   

    那么SessionID应该是在用户登录后服务器才分配的这个说法不对吧!
      

  2.   

    Session,是服务器会话,只要访问了就会产生SessionID
      

  3.   

    应用程序开启,Session就存在了,只是大多数Web程序使用她来存放一些常用信息或传输数据
    现在,很多程序都在减少对Session的使用了
      

  4.   

    要求不高的没必要放入数据库,开启状态服务,然后config里添加<sessionState mode="StateServer" ></sessionState>参考
      

  5.   


    您可能没有看清楚,我写的是Session["userId"]=null。就是说在还没有登陆前的Session["userId"]应该为null或者空。否则,如何如何判断用户的状态。
    还是没有满意的答案,继续等希望更多的高手出现。
      

  6.   

    实际上 SessionID 是每次访问都会产生的。如果此前你没有对这个特定用户 U (我这个用户与你网站上用户的概念并不一致,我这里仅指的是任何你网站的访客)的请求设置过 Session,那每次 U 再次请求时,它得到的 SessionID 都会新生成;
    一旦你为这个用户 U 的请求设置了一次 Session,那下次 U 再次请求时,服务器发现它(通过 Cookie 里的记录来发现;不依赖 Cookie 时就通过URL来发现)已经有了一个合适的 SessionID,就不会再为他生成了。也就是说,当你首次使用 Session["UserId"]=null 来为其设置 Session 时,就已经有可用的 SessionID了——我没有试过,或许 null 值会不受理睬,你调试看看是不是这样的;如果不是这样,那试图为它设置一个无效值,比如 Session["UserId"]= -1  这样肯定有 SessionID 了另外,实际上对于没有登录的用户,你根本就不需要把它的 SessionID 存到数据库中,仅在登录页面上把已登录的用户的 SessionID 存到数据库就OK了