Я пытаюсь сохранить cookie на одной странице и один раз установить, перенаправляя на другую страницу.
HttpCookie ck= new HttpCookie("ckF");
ck.Values["First"] = First.ToString();
ck.Values["Second"] = Second;
ck.Values["Third"] = Third;
ck.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(ck);
Response.RedirectToRoute("default");
Затем я проверяю, существует ли cookie, и если он существует, я обрабатываю его следующим образом:
var test = Response.Cookies["ckF"];
if(!HttpContext.Current.Response.Cookies.AllKeys.Contains("ckF"))
Response.RedirectToRoute("CookieSettingPage");
else
{
HttpCookie cok = HttpContext.Current.Request.Cookies["ckF"];
NameValueCollection nameValueCollection = cok.Values;
Dictionary<string, string> keyVal = new Dictionary<string, string>();
foreach (string key in nameValueCollection.AllKeys)
{
keyVal.Add(key, cok[key]);
}
}
Здесь я сталкиваюсь с двумя проблемами:
Файлы cookie работают только один раз.То есть, после прочтения все работает нормально. Но если я перезагружаю страницу Следующая строка не показывает значения cookie
HttpCookie cok = HttpContext.Current.Request.Cookies ["ckF"];
Еще одно, если я удалю следующую строку, то значения cookie не могут быть получены.
var test = Response.Cookies ["ckF"];
Что ожидается: Страница (cookieSettingPage) устанавливает выбранные пользователем настройки для30 дней, после чего пользователь перенаправляется на страницу по умолчанию.В следующий раз, когда пользователь заходит на сайт, мне нужно проверить, есть ли настройки в cookie.Если это так, мне нужно перевести пользователя непосредственно на страницу по умолчанию, иначе перенаправить на cookieSettingPage.
Может кто-нибудь сообщить мне, что именно не так с этим кодом?