Я думаю, что нашел проблему. Если вы создадите собственное имя файла cookie, это будет хорошо! Итак, измените с:
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(ticket));
до
HttpCookie cookie = new HttpCookie(
"SiteCookie",
FormsAuthentication.Encrypt(ticket));
А затем получить его в соответствии с вопросом:
string encryptedCookie = Request.Cookies[ "SiteCookie" ].Value;
FormsAuthenticationticket ticket = FormsAuthentication.Decrypt(encryptedCookie);
Assert.IsFalse( ticket.UserData.Length == 0 ); //Hooray! It works
Это возможно. NET делает некоторые хитрые вещи с ним, поэтому, вставив его в новый, отлично работает.
UPDATE:
Кроме того, билет необходимо обновить, в противном случае срок действия билета истечет, пока пользователь использует веб-сайт:
FormsAuthentication.RenewTicketIfOld(ticket); // Do before saving cookie