用户使用Membership登录后(vs2005自带的登录系统),再使用Session记录一些该用户相关的信息,但是在使用过程中发现只要网页几分钟不操作,Session["user"]经常就变成了null,原来赋值的信息不见了.
还有有时在操作过程当中,session["user"]信息也会莫明其妙的变成null,可能与出现的异常有关???Session时间延时我已经设置了1小时.
还有有时在操作过程当中,session["user"]信息也会莫明其妙的变成null,可能与出现的异常有关???Session时间延时我已经设置了1小时.
{
public string SessionID;
string 登录时间;
string 登录时的验证码;
uri 登录时的推荐广告;
guid 数据库中用户id;
}这个对象你不必存在Session中,可以存在数据库中。因为即使服务器整个机器断电重新启动之后,当客户端访问服务器的时候并不感觉出服务器重启了,Session.SessionID也仍然是原来那个,你的程序只要能在内存中找到这个SessionID对应的“登录用户”类型的对象就行。至于说这个“找到”是从Session、Cache、数据库中找到的,那是ORM层作的事,程序开发不用考虑。
u.age=19;
.....
MySession session=new MySession(Session.SessionID);
session["user"]=u;
可见,我所说的“Session服务”是指与asp.net的Session基本上用法完全一样的东西。只是因为asp.net太差劲了,我们需要写出更好的Session。
我现在的解决思路是在,在code文件夹里定义了一个类(本来就有这个类,它自定义了用户的各种操作),如果发现Session变空,则再去读取一次,这样应该能解决...
另外,sp1234所说的状态服务器是不是指viewstate?
服务器是自己的,有几台,还有数据库,我想用数据库来存不很现实,我本来就是从数据库中调用数据的,或许可以改到缓存当中去?