C#静态(static)属性实现跨页面共享数据的大问题。

平时写程序不用考虑登录问题,这段时间开发一个后台管理程序,并且要暂存一些用户的登录信息。所以还是用了以往的方法,用类中的静态属性来保存信息,用静态方法读出写入信息。实现简单的跨页面的共享数据。

可是写完程序的时候,忽然意识到一个问题!

 

当第一个用户登录进来后,静态属性被赋值了第一个用户的信息,当第二个用户登录后,这个静态属性就被赋值了第二个用户信息。

那么当我以后再想取回第一个用户登录时的一些属性,那么我将无法取到,因为这个时候静态属性已经被第二个登入用户重新赋值。

而非静态属性,无法再跨页面共享数据。

QueryString不现实,因为我不知道何时用到这个属性。

Session对象不好,Session做基本登录验证,用过多的Session给服务器鸭梨太大。1个Session=12K内存。并发数过大的时候是噩梦。

Application对象不好,因为也是公用,并且操作时候需要加锁、解锁。

 

所以,只能用Cookie了,先暂存在客户端上,等需要时,再在客户端取出。并且设置过期时间为关闭浏览器时。

Response.Cookie["cookName"].Expires = DateTime.MinValue;  //关闭浏览器时就失效。

Response.Cookie["cookName"].Expires = DateTime.MaxValue;  //永不失效。但是不要用,因为不要私自替用户做决定。

但若客户端关闭了Cookie功能,那就杯具了!!!!

 

 

 

天啊,这么一个问题一直没有测试出来,因为我一直都是一台电脑,一个用户来进行登录测试!!!!!太失败了!!!!!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值