a页面
 //用户登陆 将之前的session清理再重新赋值
                Session.Abandon();
                Session.Clear();
                Session.Timeout = 1500;
                Session["useraccount"] =muser.Useraccount;
                Session["role_id"] = muser.Role_id;
                Session["id"]=muser.Id;
                if (Session["useraccount"] != null)
                    Response.Redirect("test.aspx");
b页面
                if (Session["useraccount"]!=null)
                   Label1.Text = Session["useraccount"].ToString();
              if (Session["role_id"] != null)
                   Label2.Text = Session["role_id"].ToString();
           Label1.Text = Session["useraccount"].ToString() ;
           Label2.Text = Session["role_id"].ToString();
在a页面session赋值后能读取 但跳转到b页面就空了。
b页面还 报错
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 19:             if (Session["role_id"] != null)
行 20:                    Label2.Text = Session["role_id"].ToString();
行 21:            Label1.Text = Session["useraccount"].ToString() ;
行 22:            Label2.Text = Session["role_id"].ToString(); 
行 23:         }
 
百度过很多帖子 对比过是没问题的 我代码是用三层架构写的 有dll文件,不知道有没有关系。求大神解救session

解决方案 »

  1.   

    的确好神奇
    你所的B页面时test页面么?你用Session存了好多信息。。好多个会话为什么要用这么多session去存储
      

  2.   

    看清楚点 只有3个session 也不多啊 
      

  3.   

    居然要用Session就不应该取消当前回话.
      

  4.   

    Abandon和Clear是为了安全用的
    我好奇的是,你是怎么跳转到b页面的,能把代码贴下不?
      

  5.   

    Session.Timeout = 1500;值大了
    参考http://bbs.csdn.net/topics/230011016
      

  6.   

    Response.Redirect("test.aspx"); 不好意思刚刚没看到Response.Redirect 时会强制终止当前Response ,不发送当前页面的cookie 给浏览器,而是发送一个指令告诉浏览器重新发送一个新的HTTP请求到新的URL,导致当前的Session 丢失。
      

  7.   

    试试 Response.Redirect("test.aspx", false);
    顺便看看Cookie有没有被禁
      

  8.   

    session 时间长了会有泄漏的 。如果是长时间操作的话 ,不推荐使用session处理临时数据。可以选择其他的方式
      

  9.   


    答案正解,我删除掉abandon和clear就可以了