Я создал Httpcookie с FormsAuthentication.Я написал как ниже.Время истечения было создано как 2019-12-13T06: 44: 35.508Z в chrome.
в файле web.Config;
<authentication mode="Forms">
<forms name="qwe" loginUrl="~/login.aspx"
protection="All" path="/" timeout="525600" />
</authentication>
<sessionState mode="InProc" timeout="525600" />
<authorization>
<deny users ="?" />
<allow users = "*" />
</authorization>
Создание файла cookieПри входе в систему;
Session["additionalInfo"]="w1";
int timeout = remember ? 525600 : 30;
var ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now,
DateTime.Now.AddMinutes(timeout), remember, userId);
string encrypted = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie("qwe", encrypted);
cookie.Expires = System.DateTime.Now.AddMinutes(timeout);
Response.Cookies.Add(authCookie);
в Global.asax; // сеанс теряет свое значение примерно на 20 или меньше, чем на 20 минут.Я сохраняю это значение здесь, чтобы обновить его.
//first times session comes null in aspnet webform, i use actual code if it is really exist.
if (HttpContext.Current.Session != null)
{
var authCookie = HttpContext.Current.Request.Cookies["qwe"];
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
if (authTicket != null && !authTicket.Expired)
{
if (HttpContext.Current.Session["additionalInfo"] == null)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var userId = serializer.Deserialize<int>(authTicket.UserData);
var dr = new UserFinder().GetUserDr(userId);
HttpContext.Current.Session["additionalInfo"] = "w1";
}
}
}
}