Мой web.config я поставил 10 мяту для тайм-аутаCookies истекающие после каждой сессии
<sessionState mode="InProc" timeout="10" />
И мой фильтр следующим образом
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpSessionStateBase session = filterContext.HttpContext.Session;
HttpCookie userInfoCookie =
HttpContext.Current.Response.Cookies[System.Configuration.ConfigurationManager.AppSettings[Convert.ToString(CookieField.cookieName)]];
string userExpire = string.Empty;
userExpire = new UserControllerHelper().FetchDataFromCookie(CookieField.UserRoleId.ToString());
if (userExpire == null)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" }, { "Area", "" } });
}
}
И мои все методы имеют фильтр [SessionExpire] Он отлично работает в течение одного сеанса, но для последующего щелчка по тому же методу действий куки автоматически очищаются.
В Global.asax я следующий код
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 10;
}
void Session_End(object sender, EventArgs e)
{
}
Я пробовал разные выходы времени, но все еще не повезло.
Я спасаю печенье со следующим кодом
//create a cookie
string cookieName = System.Configuration.ConfigurationManager.AppSettings[Convert.ToString(CookieField.cookieName)];
HttpCookie userCookie = new HttpCookie(cookieName);
//Add key-values in the cookie
userCookie.Values.Add(Convert.ToString(CookieField.UserId), EncryptData(Convert.ToString(userRegistrationModel.Id)));
userCookie.Values.Add(Convert.ToString(CookieField.UserFirstName), EncryptData(Convert.ToString(userRegistrationModel.FirstName)));
userCookie.Values.Add(Convert.ToString(CookieField.UserLastName), EncryptData(Convert.ToString(userRegistrationModel.LastName)));
userCookie.Values.Add(Convert.ToString(CookieField.UserLogin), EncryptData(Convert.ToString(userRegistrationModel.Login)));
userCookie.Values.Add(Convert.ToString(CookieField.UserPassword), Convert.ToString(userRegistrationModel.LoginPassword));
userCookie.Values.Add(Convert.ToString(CookieField.UserRoleId), EncryptData(Convert.ToString(userRegistrationModel.RoleId)));
userCookie.Values.Add(Convert.ToString(CookieField.UserConfirmed), Convert.ToString(userRegistrationModel.IsConfirmedByAdmin));
//set cookie expiry date-time, if required.
userCookie.Expires = DateTime.Now.AddMinutes(10);
//writing the cookie to client.
HttpContext.Current.Response.Cookies.Add(userCookie);
, но после того, как момент «истекает» автоматически превращается в 0. Есть ли ошибка в экономии времени истечения даты в этом коде?