ASP.NET 登录时保存的Session,在跳转页面后获取不到

昨天晚上加班赶工到今天下午时,一直被一个莫名其妙的问题困恼!

一个后台项目,在登录时获取基础信息保存到指定命名的Session中,登录成功后跳转页面,然后在跳转的页面后台加载Session时,发现获取不到前面保存的值,而且SessionID也发生了变化。

因为手头上还有另外一个项目,里面保存的Session方式和当前这个项目基本是一样的方式。但另一个正常,这个就取不到。

P.S. 也不是说这个项目从一开始就取不到。这是旧项目,在其基础上做修改。我只是在登录时增加了几个保存的信息和修改了几个之前保存信息的类型。然后增加和修改的就死活取不到,都是NULL;

后来请教了一个大神级的同事帮着看,但他也一时半会没发现哪里有问题。后来他说发现Session会话被取消了(原话忘记怎么说的了,但大体是这个意思)

经他这么一提醒,我把整个解决方案里出现过会话取消的语句,都搜查了一遍,发现了三四处。然后分别打上断点。

其中项目的起始页Login.aspx里的后台Load事件中,我早先加了清Session的语句,Session.Abandon();

在运行时,发现当保存完信息后,跳转新页面前,还会再次执行一遍Load事件里的这个取消会话语句;

到此,确认问题所在了!后来加了个 if(!isPostBack) 来限制只在页面第一次加载时执行一次。又因为同事大神告知,最好别用这个Session.Abandon(),改为Session.Clear();比较好,网上查了两者的介绍后,就改成Clear方法了。

总结,早先为了程序的严谨和释放资源,结果胡乱加了些不是很理解的语句。导致后来出现的奇怪问题。自己把自己坑了。。。

以此做个记录,同时希望能帮助后来者!

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

霜影

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值