关于session的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 13:07:22
我在做毕设,但遇到了一个session的问题一直解决不了。
我利用session来实现验证用户是否在线的功能,我是这样实现的:当登陆成功时给session赋值: Session["userID"] = txt_username.Text.ToString().Trim();

验证是否已经登陆是这样判断的:
if (Session["userID"] != null)
{
if ((Session["userID"].ToString()) == txt_username.Text.ToString().Trim())
{
online = true;
}
else
{
online = false;
}
}
else
{
online = false;
}

现在出现的问题是:我登陆了一个账号后关闭页面再登陆这个账号就会提示已经在线,也就是session值不是空了,我很奇怪。
另外我登陆其他没有登陆过的账号,也会提示这样的信息。

还请高手帮我解决啊!!我QQ317571433 可以加我 解决了追加50分!!!!!!!
1楼的方法我都试过了 还是这样啊。。。。。。。 谁能给我看看啊。。。。。。

退出的时候调用Session的Clear()方法把Session清空,另外就是你登陆的时候只需要判断用户名是否存在,没必要这样写。在pageload里面先判断是否页面回传,防止多次刷新带来的问题。

在“全集应用程序类”(Global.asax)
在应用程序关闭时运行的代码
void Application_End(object sender, EventArgs e)
{
if(Session!=null)
Session.Clear();

}

因为你关闭页面的时候没能调用到销毁session的代码
因为session是保存到服务器端的,所以一定要客户端关闭了就要代码去销毁session
否则session一直存在在服务器端,一直到设定的时间到了,才会自动销毁

如果你想这么做,我给你个办法
就是你登陆了一个账号后关闭页面再打开登录页面时,判断session是否存在,存在则直接跳到其他页面,并显示你好,欢迎XXX,session不存在的才要求在登陆页面登陆

当你关闭页面的时候并不是Session马上就被销毁了。
Session是有过期时间的,当这个时间过后Session才会自动销毁。

Session[]是保留在服务器上的,浏览器是客户端的,浏览器关了,Session要过一段时间才会没有

session是有一定的时间的,可以在你的配置文件里进行设置,或在IIS内进行设置。或你退出时,让用户点退出按钮,在按钮事件里写相关代码。