配置好Sqlserver的Session后,就可以用它来管理Session。 public bool ClientLogin(string uname, string pwd) { UserSystemDataContext sudc = new UserSystemDataContext();//用于保存用户信息的表 SessionStateDataContext ssdc = new SessionStateDataContext();//SQLServer的用于保存Session的类 bool loginSucess = uidc.Users.Any(s => s.user_name == username & s.pwd == password); if (loginSucess) { bool isLogin = ssdc.ASPStateTempSessions.Any(s => s.SessionName == username); //判断该账号是否为已登录 if (isLogin) { IEnumerable<ASPStateTempSession> iTempSession = ssdc.ASPStateTempSessions.Where(s => s.SessionName == username); ssdc.ASPStateTempSessions.DeleteAllOnSubmit(iTempSession); ssdc.SubmitChanges(); } User u = uidc.Users.Single(s => s.user_name == username & s.pwd == password); Session["UserName"] = u.user_name; Session["RoleID"] = u.role_id; /* * 判断该账号是否曾经登录过系统 * 如果登录过系统,则显示最近登录时间 */ if (u.latest_login != null) { Session["LatestTime"] = u.latest_login; } //将用户名保存入ASPStateTempSession中,使SessionID能够与UserName进行匹配 ASPStateTempSession tempSession = ssdc.ASPStateTempSessions.Single(s => s.SessionId.Contains(Session.SessionID)); //bool tempSession = ssdc.ASPStateTempSessions.Any(s => s.SessionId.Contains(Session.SessionID.ToString())); tempSession.SessionName = u.user_name;//SessionName是自己添加的属性,用于保存UserName ssdc.SubmitChanges(); //替换最近登录时间为本次登录时间 u.latest_login = tempSession.LockDateLocal; uidc.SubmitChanges(); } return loginSucess; }