各位大虾神仙,我的系统是ASP.net2.0开发,页面Login是记录几个session值,
到里面的页面后,读这个session值显示到页面,我们几个人同时测试,分别记录不同的session值,会发现每一个Client的session值和登录时记录的不一样,再刷新又一样,进入不同的页面获取相同的session 值都是时而一样时而变化成别的session值。
我们多次测试,都是这样,感觉很崩溃。请各位高手救命呀!!
我设定session值的代码如下:
Session.Add("SDBPlants", ddlPlant.Text);
我获取此session值的方法如下:
if (Session.Contents["SDBPlants"] != null)
   {
      this.ddlPlants.Items.Clear();
      this.ddlPlants.Items.Add(Session.Contents["SDBPlants"].ToString());
    }你有什么意见和建议,小弟感激不尽。

解决方案 »

  1.   

    用之前先Session.Clear(),少用Session.Contents()方法,直接用Session["SDBPlants"].ToString(0
      

  2.   

    你的意思是说,我在login时先清空此session, 然后再记录?
    至于Session.Contents()方法和Session["SDBPlants"].ToString()我都有尝试过,效果一样,
    崩溃了。
      

  3.   

    我都是这样做的没遇到这种问题啊!
    Session["Code"] = tbLoginCode.Text;
    Session["Password"] = tbLoginPassword.Text;
      

  4.   


       我都是这样做的没遇到这种问题啊!
    Session["Name"] = tbLoginCode.Text;
    Session["Passw"] = tbLoginPassword.Text;
      
     
      

  5.   

    新开窗口就是新session了,即使是在同一台机器上同一个帐号登陆
      

  6.   

    /// <summary>
    /// KEOA中所有Session的使用 的摘要说明
    /// </summary>
    public class KEOAWebSession
    {
           
        /// <summary>
        /// 应用程序错误信息
        /// </summary>
        public static string ErrorMessage
        {
            set
            {
                HttpContext.Current.Session["ErrorMessage"] = value;
            }
            get
            {
                if ( HttpContext.Current.Session["ErrorMessage"] != null )
                {
                    return HttpContext.Current.Session["ErrorMessage"].ToString();
                }
                else
                    return string.Empty;
            }
        }    /// <summary>
        /// 登录的用户名信息
        /// </summary>
        public static string UserName
        {
            set
            {
                HttpContext.Current.Session["UserName"] = value;
            }
            get
            {
                if (HttpContext.Current.Session["UserName"] != null)
                {
                    return HttpContext.Current.Session["UserName"].ToString();
                }
                else
                    return string.Empty;
            }
        }    /// <summary>
        /// 用户登录名称
        /// </summary>
        public static string UserLoginName
        {
            set
            {
                HttpContext.Current.Session["UserLoginName"] = value;
            }
            get
            {
                if ( HttpContext.Current.Session["UserLoginName"] != null )
                {
                    return HttpContext.Current.Session["UserLoginName"].ToString();
                }
                else
                    return string.Empty;
            }
        }    /// <summary>
        /// 登录的用户名ID信息
        /// </summary>
        public static string UserID
        {
            set
            {
                HttpContext.Current.Session["UserID"] = value;
            }
            get
            {
                if (HttpContext.Current.Session["UserID"] != null)
                {
                    return HttpContext.Current.Session["UserID"].ToString();
                }
                else
                    return string.Empty;
            }
        }    /// <summary>
        /// 登录的用户名ID信息
        /// </summary>
        public static string curReceveSendState
        {
            set
            {
                HttpContext.Current.Session["curReceveSendState"] = value;
            }
            get
            {
                if (HttpContext.Current.Session["curReceveSendState"] != null)
                {
                    return HttpContext.Current.Session["curReceveSendState"].ToString();
                }
                else
                    return string.Empty;
            }
        }}
      

  7.   

    我通常都是存在一个把Session存在一个类里面,然后登陆时 
    给KEOAWebSession.属性赋值
    然后调用时 KEOAWebSession.属性 就可以了
    你试试这个方法行不
      

  8.   

    楼上兄弟的方法不错,不过你有没有想过,你把Session存在类里,通过设置和读取属性来做,变量的定义必须是静态的,否则是没有办法用的。如果是静态的话,多个用户先后调用的话,会修改属性的值,比如A登录后选择的是CS10, B登录选择的是CS20, 那么你说A如果此时直接去获取类的属性,得到的是CS20还是CS10呢? 很显然是CS20.
    我很郁闷!!
      

  9.   

    Session.Contents["SDBPlants"] != null????
      

  10.   

    应该不会变啊。
    ddlPlant.Text 输入什么,SDBPlants 这个 key 的值就是什么啊。
      

  11.   

    需要检查以下几个地方:
    1,Session设置是否是InProc模式
    2,InProc模式与iis6中该网站使用的应用程序池中Web园数目的设置有关(设置为1 )
    3,在测试时是否有应用程序重起的问题,如更新了web.config,病毒扫描,修改global等。
    4, 
    在global.asax里写,尽管实际没有任何作用
    protected void Session_Start(Object sender, EventArgs e)
      {
        Session["foo"] = "foo";
      }
    5,如果还不行,将你的出文件文件挑出来,建立一个测试工程让大家下载试验,以便检查现象和察看代码是否有误 (去掉与数据库有关的任何操作)