日期:2014-05-17  浏览次数:20494 次

发布到服务器里的SESSION老是丢失

我登录后台时,进行信息的修改,但是进行编辑的时候,点击保存时它就告诉我,请登录,估计是SESSION为空了,
但是我在登录的页面中,验证通过后设置了它的过期时间为20分钟
我在每个页面中的加的语句是

 protected void Page_Load(object sender, EventArgs e)
    {

        if (Session[""] == null)
        {
            //弹出消息框,请登录
        }
        else
        {
            if (!IsPostBack)
            { 
            //加载信息或其它
            }
        }
        
    }

------解决方案--------------------
我不推荐用session来控制,占用服务器资源。
refer: http://blog.csdn.net/agaric717/article/details/6531385
------解决方案--------------------
你可以将Session["user"]保存在模板页的类的成员变量中,然后所有页面都继承模板页,在子页面中用成员变量名就可以了,这样非常方便。
------解决方案--------------------
最好的做法是不用session用cookie自己实现

其次的话可以考虑存到sql server或者用memcached
------解决方案--------------------
引用:
[b]
我登录后台时,进行信息的修改,但是进行编辑的时候,点击保存时它就告诉我,请登录,估计是SESSION为空了,
但是我在登录的页面中,验证通过后设置了它的过期时间为20分钟

过期时间是20分钟又怎么了呢?

我们通常讨论在InProc模式下asp.net会丢失Session集合等等数据,而不是过期。
------解决方案--------------------
我曾遇到和你一样的问题,你应该用的是默认InProc 模式,这种模式很容易丢失session信息,让人大为光火,后来改用StateServer模式,这世界马上又那么美好了

参见 http://blog.csdn.net/cityhunter172/article/details/727743
------解决方案--------------------
“丢失”而不是“过期”。

许多人在这个问题上都是在不断重复“过期时间20分钟”,那是很无厘头的(貌似相关但是其实无关的)。