ASP.NET Session不会保持跨页面存储

时间:2009-08-05 01:42:50

标签: .net asp.net session httpcontext

首先,我创建了一个Login页面,该页面为会话添加了一个键值对,并验证该会话在该页面上保存该对。 接下来,我尝试转到另一个页面,在会话中查找该对,但它不在那里。我已将会话的超时时间设置为15000,因此不会超时。 我目前使用静态类来查看会话,HttpContext.Current.Session。 每个Page调用此静态类来查看会话,但每次会话密钥count = 0时,除了登录页面上的对之后。

public static class UserAuthenticationManager
{
    public static bool IsAuthenticated()
    {
        UserAuthenticationTicket ticket = ((UserAuthenticationTicket)HttpContext.Current.Session[DefinesPL.UserTicketSessionName]);

        string redirectUrl = String.Format(DefinesPL.LoginPage);

        if (ticket != null)
        {
            if (ticket.IsExpired())
            {
                HttpContext.Current.Session.Abandon();
                HttpContext.Current.Response.Redirect(redirectUrl, true);
            }
        }
        else
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Response.Redirect(redirectUrl, true);
        }

        return true;
    }

2 个答案:

答案 0 :(得分:1)

最常见的原因是cookie被禁用。您需要使用Cookie,或切换到cookieless session model,这有点难以使用。

答案 1 :(得分:0)

也可能要确保将Global.asax添加到项目中。我相信我之前遇到过这种情况,为每个HTTP请求创建了一个新会话。