在判断用户非正常退出的情况下,想到了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存入数据库中。
达人的回答,明白了很多。我现在所了解的是在Session_Start事件里面你必须把Session.SessionID存入数据库。但是,我的程序在最开始的时候,在Session_Start中给Session["userId"]付了初值。Session["userId"]=null,因为,在最开始的时候,用户还没有登录,server也不会产生SessionID的。那么SessionID应该是在用户登录后服务器才分配的。这个时候我应该如何处理SessionID,把SessionID存入数据库中。
现在,很多程序都在减少对Session的使用了
您可能没有看清楚,我写的是Session["userId"]=null。就是说在还没有登陆前的Session["userId"]应该为null或者空。否则,如何如何判断用户的状态。
还是没有满意的答案,继续等希望更多的高手出现。
一旦你为这个用户 U 的请求设置了一次 Session,那下次 U 再次请求时,服务器发现它(通过 Cookie 里的记录来发现;不依赖 Cookie 时就通过URL来发现)已经有了一个合适的 SessionID,就不会再为他生成了。也就是说,当你首次使用 Session["UserId"]=null 来为其设置 Session 时,就已经有可用的 SessionID了——我没有试过,或许 null 值会不受理睬,你调试看看是不是这样的;如果不是这样,那试图为它设置一个无效值,比如 Session["UserId"]= -1 这样肯定有 SessionID 了另外,实际上对于没有登录的用户,你根本就不需要把它的 SessionID 存到数据库中,仅在登录页面上把已登录的用户的 SessionID 存到数据库就OK了