Используя что-то вроде следующего кода, ваш куки будет сохраняться в течение недели, пока не истечет:
HttpCookie theCookie = FormsAuthentication.GetAuthCookie("theUser", false);
theCookie.Expires = DateTime.Now.AddDays(7);
Response.SetCookie(theCookie);
Единственная разница между «постоянным» cookie и тем, который не является, заключается в том, что для последнего установлен срок действия «Session». Самый простой способ подтвердить это - проверить это. Из моего краткого испытания, он работает без инцидентов.
Класс, на который вы ссылаетесь, в основном используется библиотекой FormsAuthentication
, и я считаю, что он не должен быть вашим основным методом достижения ваших целей, если они могут быть доступны с помощью статической функции-члена класса FormsAuthentication
, которая предоставляется вам в качестве помощника для доступа ко всем функциям, включенным в библиотеку. Например, класс FormsAuthenticationTicket
является выводом FormsAuthentication.Decrypt
и предоставит вам информацию о данных, зашифрованных в значении cookie. Это не то, что вы должны использовать для создания файла cookie аутентификации в коде.
EDIT
Относительно того, что это означает, если оба свойства установлены одновременно, это означает, что, учитывая ваш постоянный флаг в зашифрованных данных билета, как только билет теряет свою актуальность, он будет обновляться каждый раз, когда пользователь посещает. FormsAuthentication
позвонит по номеру FormsAuthentication.RenewTicketIfOld
, чтобы сохранить билет на неопределенный срок. Поведение по умолчанию, когда вы помечаете заявку как постоянную с помощью вспомогательных методов FormsAuthentication.SetAuthCookie
или FormsAuthentication.GetAuthCookie
, инициализирует зашифрованные данные заявки с истечением, установленным на текущую дату и время создания заявки. Это можно подтвердить, позвонив по номеру FormsAuthentication.GetAuthCookie
и позвонив по номеру FormsAuthentication.Decrypt
, используя Value
свойство HttpCookie
, которое вы получили. Если вы проверите свойство Expiration
билета, вы обнаружите, что для него установлены текущие дата и время.