我剛剛推出了我的第一個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