我刚刚推出了我的第一个MVC3应用程序,除Cookies授权外,一切正常。当用户访问我的网站并登录时,我使用关于该用户的数据设置了一个.ASPAUTH cookie。它运行良好,直到一段时间过去。然后,即使该Cookie位于浏览器中,我也必须再次登录,并且可以看到过期设置为一年后。它在我的本地主机上正常工作。 在我看来,它不是将我的信息设置为cookie,而是以某种方式在会话中,但即使我在一小时内重新启动计算机,我仍然登录。但如果我在1小时内未访问网站,我退出了。MVC3不接受cookie
感谢您的任何帮助。
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
requestedUser.Name,
DateTime.Now,
DateTime.Now.AddYears(1),
true,
string.Format("{0};{1};{2}", requestedUser.IDUser.ToString(), requestedUser.IsAdmin.ToString(), profilePicture));
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
cookie.Expires = keepLogged == "keepLogged" ? DateTime.Now.AddYears(1) : DateTime.Now.AddHours(1);
this.Response.Cookies.Add(cookie);
return RedirectToAction("Index", "Posts");
应用程序池重新启动可能是由于空闲超时导致会话cookie无效 - 请参阅http://stackoverflow.com/questions/4277944/ is-it-it-to-recycle-iis-application-pools-without-losing-user-sessions – tawman 2012-03-21 13:28:01
你可以在你设置表单身份验证的地方显示代码吗? – 2012-03-21 13:34:53
@tawman感谢您的帮助,但我可以在客户端的浏览器上看到cookie,为什么应用程序不能?对不起,跛脚的问题,但我真的必须解决这个问题,不明白什么是错的。 – Petr 2012-03-21 13:40:12