用Session暂存DataTable出現出現数据丢失

liushengan 2006-08-04 01:37:18
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在 只是丢失了数据 会不会是设置
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
AdaLoveLacer 2006-08-05
  • 打赏
  • 举报
回复
里面的数据类型是什么类型?
liushengan 2006-08-05
  • 打赏
  • 举报
回复
每写在if(!this.IsPostBack)里面
snowvan 2006-08-04
  • 打赏
  • 举报
回复
前几天也这么用了!但是师傅说不准我用怪招!
leafsword_519 2006-08-04
  • 打赏
  • 举报
回复
我把dt.Dispose();去掉了 还是出错误 跟踪下dt.Rows.Count还是==0
说明下 这段代码是重写在 OnLoad 事件中的protected override void OnLoad(EventArgs e){}
繼承自 System.Web.UI.Page


---------------------------

你没写在if(!this.IsPostBack)里面吗?
liushengan 2006-08-04
  • 打赏
  • 举报
回复
我把dt.Dispose();去掉了 还是出错误 跟踪下dt.Rows.Count还是==0
说明下 这段代码是重写在 OnLoad 事件中的protected override void OnLoad(EventArgs e){}
繼承自 System.Web.UI.Page
wen7679 2006-08-04
  • 打赏
  • 举报
回复
Session.Add("userCache", dt);之后不能 dt.Dispose();
Miracle 2006-08-04
  • 打赏
  • 举报
回复
不小心提交了……如果你使用的是In-Proc session state,当你往Session里面存储对象的时候,存储的是对对象的引用,而不是存储它的克隆,所以你执行了dt.Dispose()的话就相当于摧毁了Session中存储的数据。
Miracle 2006-08-04
  • 打赏
  • 举报
回复
Session.Add("userCache", dt);之后不能 dt.Dispose();
可爱的排骨 2006-08-04
  • 打赏
  • 举报
回复

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

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧