У меня возникла проблема, когда cookie, который я устанавливаю, теряется сразу после вызова RedirectToAction(). Что-то происходит за кулисами, что делает недействительным текущий запрос и создает новый, который заставляет cookie быть потерянным, прежде чем он будет сохранен на диске?Cookie не сохраняется в MVC
Я понимаю, что если вы хотите, чтобы данные были доступны после перенаправления, вам нужно использовать TempData, но это то же самое для файлов cookie? Если да, то не кажется ли уродливым хранить значение cookie в TempData, а потом писать cookie позже?
Update:
Я просто понял, что печенье теряется в конце запроса, это не имеет значения, если я называю RedirectToAction(). Итак, теперь вопрос заключается в том, почему куки-файлы сохраняют два запроса? (Я обновляю код ниже, чтобы показать, что я делаю сейчас)
public ActionResult DoSomething()
{
Response.Cookies["SomeCookie"].Value = "Jarified";
Response.Cookies["SomeCookie"].Expires = DateTime.UtcNow.AddDays(3);
return View("SomeView");
}
Update
Я создал новый проект MVC, используя шаблон по умолчанию. Я изменил действие HomeController/Index, чтобы иметь код ниже. В первый раз, когда я попал в точку зрения «Cookie Not Found», печатается, как и ожидалось. Однако каждый последующий момент печатается одно и то же сообщение. Если я удалю строку, которая устанавливает дату истечения срока действия, тогда все будет хорошо. Я предполагаю, что реальный вопрос заключается в следующем: почему постоянство cookie заставляет браузер отбрасывать его? Есть ли уловка для создания файлов cookie в MVC?
public ActionResult Index()
{
HttpCookie cookie = Request.Cookies["temp"];
if (cookie == null)
{
ViewData["Message"] = "Cookie Not Found";
Response.Cookies["temp"].Value = "Welcome to ASP.NET MVC!";
Response.Cookies["temp"].Expires = DateTime.UtcNow;
}
else
{
ViewData["Message"] = cookie.Value;
}
return View();
}
В конце прошлой ночью я понял, что если я изменил второй образец DateTime.UtcNow .AddDays (3); он работал. Я еще не понимаю, почему мой первый пример не работает для меня. Я думаю, что была моя первоначальная проблема - это значение, которое я хранил - это не «Ярифицированный», а гораздо длиннее. Интересно, истекает ли срок годности более 4K. Спасибо за ответ! – Joe