DataTable dt = new DataTable();
if( Session["userCache"] == null)
{
  dt = GetUserInfo();//从数据库中取得所有用户的个人资料
  Session.Add("userCache", dt);
  dt.Dispose();
}
else
{
  dt = (DataTable)Session["userCache"]; //从session中获取DataTable
}首次打开页面的时候页面正常显示用户表的数据
当刷新一次的时候页面就不显示了  关闭浏览器再次打开的话有正常显示  刷新又不显示
我跟踪调试了下当Session["userCache"] == null时候  dt.Rows.Count = 40 反正为0  
但刷新页面的时候 session有没丢失 程序会判断出Session["userCache"] !=null而执行
dt = (DataTable)Session["userCache"]; //从session中获取DataTable
我用Response.Write((DataTable)Session["userCache"].ToStrong());得到Table1
说明session还在 没丢失  但里面的数据确没有了  这是怎么回事  请大家帮忙解決下 这个应该不是代码的问题  session在  只是丢失了数据 会不会是设置

解决方案 »

  1.   


      dt.Dispose();
    这个去掉试下
      

  2.   

    Session.Add("userCache", dt);之后不能  dt.Dispose();
      

  3.   

    不小心提交了……如果你使用的是In-Proc session state,当你往Session里面存储对象的时候,存储的是对对象的引用,而不是存储它的克隆,所以你执行了dt.Dispose()的话就相当于摧毁了Session中存储的数据。
      

  4.   

    Session.Add("userCache", dt);之后不能  dt.Dispose();
      

  5.   

    我把dt.Dispose();去掉了  还是出错误   跟踪下dt.Rows.Count还是==0
    说明下 这段代码是重写在 OnLoad 事件中的protected override void OnLoad(EventArgs e){}
    繼承自 System.Web.UI.Page
      

  6.   

    我把dt.Dispose();去掉了  还是出错误   跟踪下dt.Rows.Count还是==0
    说明下 这段代码是重写在 OnLoad 事件中的protected override void OnLoad(EventArgs e){}
    繼承自 System.Web.UI.Page
    ---------------------------你没写在if(!this.IsPostBack)里面吗?