web项目中用户名等信息都是用Session保存的,以前一值运行挺好的,最近发现了个奇怪的问题!我用用户A登录系统,然后系统显示的是A,然后退出系统或者关闭浏览器,然后再用B用户登录系统,但是此时系统仍然显示的是A用户,但是只要刷新下就编程B用户了,实在是疑惑,由于这种原因,导致其他用户登录系统后,系统显示的都是与A用户相关的信息,包括用户的权限等等!找了半天也没找到到底是哪的原因,希望高手指点!到底是哪里出错了才有可能导致这种问题呢?补充几点是系统主页面用的是frameset,最近网速比较慢,不知道和网速有没有关系!

解决方案 »

  1.   

    请问sprc_lcl,有什么好方法去除页面缓存吗?很多个页面手动一个一个的改不现实!
      

  2.   


    if(session["userinfo"]!=null)
    {
       session.clear();//清空全部的
    }
    else
    {
       session["userinfo"]= userinfo;
    }以上代码只表意
      

  3.   

    可试着在页面程序上加上:
    Page_Load(...)
    {
     if(!IsPostBack)
     {
      if(Request.QueryString["rdate"] == null)
      {
       Response.Redirect(Request.RawUrl+"?rdate="+DateTime.Now.ToString());
      }
     }
    }//我想只需要主页面上的初始加载页加上上面的程序就可以了(frameset内的默认小页)//如果不行可弄个重写类,所有页面都加
    public class UserPage : System.Web.UI.Page
    {
        public UserPage()
        {
        }    protected override void OnLoad(System.EventArgs e)
        {
            if(!IsPostBack)
     {
      if(Request.QueryString["rdate"] == null)
      {
       Response.Redirect(Request.RawUrl+"?rdate="+DateTime.Now.ToString());
      }
     }
            base.OnLoad(e);
        }
    }//所有页面CS,继承UserPage(原来是System.Web.UI.Page)
      

  4.   

    是不是在页面上用了OutputCache之类的东西?
      

  5.   

    你在登录存Session的时候先Session.Clear();
    再Session["xxx"]="";
      Session["xxx"]="";
      

  6.   

    先清一下Session 你说的这是一种bug 还有一种是在IE7.0以上的这些选项卡里面 如果用Session的话会混乱的 这个也清注意一下。
      

  7.   

    楼上几位说的对
    退出清session的时候再清下缓存
      

  8.   

    登陆 时判断一下,如果有session
    if(session["user"]!=null)
    {
       session.clear();//清空全部的session
    }
    如果没有
    else
    {
       session["user"]= user;
    }