ASP.NET会话未保持跨页面存储

ASP.NET会话未保持跨页面存储,.net,asp.net,session,httpcontext,.net,Asp.net,Session,Httpcontext,首先,我创建了一个登录页面,该页面向会话添加了一个键值对,并验证会话在该页面上是否持有该键值对。 接下来,我尝试转到另一个页面,在会话中查找该对,但它不在那里。我已将会话超时设置为15000,因此不会超时。 我目前使用一个静态类来查看会话HttpContext.Current.session。 每个页面都调用这个静态类来查看会话,但是每次会话密钥计数=0时,除了在登录页面上输入该对之后 public static class UserAuthenticationManager { pub

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

最常见的原因是cookies被禁用。您需要使用Cookie,或者切换到更难使用的。您可能还需要确保将Global.asax添加到您的项目中。我相信我以前遇到过这种情况,每次HTTP请求都会创建一个新会话。

您是否手动检查浏览器存储的cookie?如果您使用的是firefox,您可以尝试view cookie插件。例如