【问题标题】:ASP.NET Session is not keeping stored across pagesASP.NET 会话未跨页面保持存储
【发布时间】:2009-08-05 01:42:49
【问题描述】:

首先,我创建了一个登录页面,该页面向会话中添加了一个键值对,并验证了该页面上会话持有该对。 接下来,我尝试转到另一个页面,在会话中查找该对,但它不存在。我已将会话的超时设置为 15000,因此它不会超时。 我目前使用一个静态类来查看会话,HttpContext.Current.Session。 每个 Page 调用这个静态类来查看会话,但每次会话密钥计数 = 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;
    }

【问题讨论】:

标签: .net asp.net session httpcontext


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多