httpContext.Session丢失值

时间:2016-10-21 13:56:30

标签: c# session session-state

我有一个网站,有时会话失去了价值。 这是我做的: 在Login ActionResult中,在Controller中:

private ActionResult Login(string user, string pass){
   if (Membership.ValidateUser(user, pass))
   {
      Response.Cookies.Clear();
      FormsAuthentication.SetAuthCookie(user, true);
      System.Web.HttpContext.Current.Session["userName"] = user;
      return Json(new {success = true});
   }
 }

这里,会话设置正常。 但是,在覆盖AuthorizeAttribute类:

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
   var user = HttpContext.Current.User;
   if (user == null) return false;
   if (httpContext.Session?["userName"] == null) return false;
   try
   {
      if (user.IsInRole("Admin")) return true;
   }
   catch (Exception ex)
   {
      return false;
   }
}

此处会话为NULL。 我发现了一种模式:

  1. 打开镀铬
  2. 进入该网站,然后登录 - >工作正常
  3. 关闭chrome
  4. 再次打开Chrome
  5. 进入网站并登录 - >这里失去了会话,我无法登录
  6. 然后,如果我退出(http://site/logout),那么,我可以再次登录。这是注销行动:

        public ActionResult Logout()
        {;
            FormsAuthentication.SignOut();
            System.Web.HttpContext.Current.User = null;
            System.Web.HttpContext.Current.Session.Abandon();
            System.Web.HttpContext.Current.Session.Clear();
        }
    

0 个答案:

没有答案