当用户登陆站点后台管理系统后,用session记录下用户的id和所属部门编号,在添加新闻时,把session记录下的这两点信息都添加到记录中,这样我就知道哪条新闻是哪个部门的哪个用户发布的了,可是:
1、在同一内部网内,172.26.16.1的机子用A用户登陆,发一条信息,立即查看,没问题,这时, A用户不注销session退出;
2、这期间,172.26.16.2的机子用B用户登陆,也发一条信息,查看信息,却发现这条信息变成了A发的了;B接着再发一条,这次才正确;
3、立即转到172.26.16.1机子上,A用户接着发信息,查看后居然成B发的了,再发信息又正确。就是这样的情况,好稀奇的问题,第一次用session遇到这样的情况,这分钟我实在困惑。我用的是.net开发的,我不知道session是什么地方出问题了,程序文件是放在172.26.16.3机子上的。还有就是98的系统用IE6浏览我开发的这个站点会有死机的情况,XP和2000没有,这又是为什么呢?

解决方案 »

  1.   

    应该不会发生这样的情况吧,因为session是客户端的,存新闻的信息时只是取得本机器的session值,不会影响到其他机器和服务器上的可以贴出你生成session值的语句和保存新闻信息的语句部分,大家看看有什么问题
      

  2.   

    查了些资料来看,发现好像上述的session问题是个数据串联问题,但是这分钟我依然没有找到相应的解决办法。
    我的系统的用户等级分为两级,为超级用户和授权用户,使用管理后台发布自己信息的用户不少,当大家同时使用各自的帐号发布信息时就出现了这个问题。
    session用户信息是这样赋值的:当用户登录时先判断用户名和密码,都无误后才执行如下语句Session["User_Id"] = dr["Id"].ToString();
    ……
    在提取信息表单时,我是把各项表单信息的提取都放在一个公共函数中,这样编辑后新增的时候直接调用这个公共函数就可以了,在向记录的用户信息字段添加信息时也只是执行了这样的语句
    try
    {
      string aa = Session["User_Id"].ToString();
    }
    catch(Exception ee)
    {
      Response.Write(ee.Message);
    }还得恳请各位帮我解决这个问题啊。还有就是刚才想了想为什么98死机的问题,我是这样猜的,当一个aspx页面中的web控件很多时,我们通过浏览器的查看源代码功能查看代码时会发现里面有非常大的一段编译时产生的密密麻麻的代码,控件越多,这段代码的量就越大。会不会是这个问题导致了98的死机呢?因为我有个aspx页面中集中了至少60个web控件。只是不晓得这样的猜测是否正确。
      

  3.   

    根据经验,应该与session没有关系;你在仔细看看你的程序;你用这种方式调试一下:你可以在session保存下你的用户名;在向session插入信息时你先查看一下session中的用户名,确定session正确。可能能找到错误。session是决定不会有这种错误的。
      

  4.   

    public int ZT_Login(string G_ZTName,string G_UserID,string G_PassWord)//用户登录
    {
    Sql_Execute se = new Sql_Execute();//实例化Table.cs的SQL执行类
    int S_Value = 7;//执行成功
    DataSet ds = new DataSet();
    ds = se.Select_TBUser(G_ZTName,G_UserID);
    if (ds.Tables["DataInfo"].Rows.Count <= 0 || ds.Tables["DataInfo"].Rows.Count > 1)
    {
    S_Value = 5;//用户不存在
    }
    else
    {
    foreach (DataRow dr in ds.Tables["DataInfo"].Rows)
    {
    if (dr["UserPwd"].ToString() != G_PassWord)
    {
    S_Value = 6;//密码错误
    break;
    }
    else
    {
    Session["User_Id"] = dr["ID"].ToString();
    Session["User_Jgid"] = dr["JGID"].ToString();
    Session["User_Name"] = dr["UserID"].ToString();
    Session["User_FullName"] = dr["UserName"].ToString();
    Session["User_Type"] = dr["UserType"].ToString();
    Session.Timeout = 2000;
    }
    }
    }
    return S_Value;
    } public string LoginOut()//退出登录
    {
    int S_Value = 7;//执行成功
    try
    {
    Session.RemoveAll();
    Session.Abandon();
    }
    catch
    {
    S_Value = 4;//执行失败
    }
                return this.R_Message(S_Value);
            }
      

  5.   

    http://community.csdn.net/Expert/topic/4741/4741069.xml?temp=.9674341
    和这里情况差不多,难搞
      

  6.   

    很负责任的告诉你,不可能是session的问题。
      

  7.   

    同意楼上~~~~~~~~~~~~~~~~
    session对于本机新开的IE来说,变量全是不同的,何况还是别的机器~~~~~~~~~~~
      

  8.   

    谢谢各位如此鼎力支持,经过我的苦苦分析,果然是我代码上的问题。还好的是今天通过这个问题对session加深了些认识,呵呵:)
    揭帖!!!