回 帖 发 新 帖 刷新版面

主题:特急,请各位高手帮忙看session的问题

本人做过很多的项目,从未遇到这样的问题。左右折腾不了,特请教大师们帮忙。

情况如下,本人在做系统,一般采用session来记录登陆用户的相关信息,比如部门号,用户号等,给其他的页面使用。
现在,遇到的问题是,在多个用户同时使用的情况下,比如:信息科技部的张三,登陆后看到的信息是人力资源部的李四。录入的信息,部门为李四的部门。相当郁闷,而且我在自己的机器测试无数次,不会有这样的状况,但客户反馈是会出现,而且还是在不同的机器上,不同的客户。

这种现象不是绝对情况,是随机情况,理论上说,服务器的session应该是对应客户端的cookies,动态分配一个session 的id,在不同机器上应该不会出现后登陆的李四获得的是张三的信息。相关代码如下:

   string strconn=ConfigurationSettings.AppSettings["qxdsn"];
   SqlConnection cn=new SqlConnection(strconn);
   cn.Open();
       
   SqlCommand cm=new SqlCommand("Sel_User",cn);
   cm.CommandType=CommandType.StoredProcedure ;
   cm.Parameters.Add(new SqlParameter("@uid",SqlDbType.VarChar));
   cm.Parameters["@uid"].Value=TxtUid.Text.Trim();
   cm.Parameters.Add(new SqlParameter("@pwd",SqlDbType.VarChar));
   cm.Parameters["@pwd"].Value=TxtPwd.Text.Trim();
   SqlDataReader dr=cm.ExecuteReader();
   if(dr.Read())
   {
            Session["uid"]=dr["uid"].ToString().Trim();
            Session["dep_id"]=dr["dep_id"].ToString().Trim(); 
            Response.Redirect("kqtj.aspx");  
    }
else
                {
                    Response.Write("<script languge='javascript'>alert('登录失败,请返回!')</script>");
            
                    Label1.Text="用户名或密码有误,请重新输入";
                
                }
                cn.Close();

回复列表 (共4个回复)

沙发



另外,本人尝试在if后面的语句加上清空session变量的也不行

比如加上
session["uid"]="";
session["dep_id"]="";


if(dr.Read())
   {

            Session["uid"]=dr["uid"].ToString().Trim();
            Session["dep_id"]=dr["dep_id"].ToString().Trim(); 
            Response.Redirect("kqtj.aspx");  
    }

板凳


本人以前用这个id,也帮助过很多的朋友,请懂得这个问题 的朋友指教。同时请管理员给能解决这个问题的朋友加比较高的分值。

3 楼


不太明你的意思,但SESSION不是保存在服务器端的吗,而且在用户退出时,是否用SESSION.ABANDON方法,我用的也没出现过这种问题啊

4 楼

广告时间:http://www.mytiu.cn 我刚建立的个人小站,主要涉及编程、软件开发、业界动态等内容,欢迎光临,提出建议!

我来回复

您尚未登录,请登录后再回复。点此登录或注册