主题:特急,请各位高手帮忙看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();
情况如下,本人在做系统,一般采用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();