asp.net-mvc – 在MVC中没有持久化Cookie
发布时间:2020-12-16 07:07:40 所属栏目:asp.Net 来源:网络整理
导读:我遇到一个问题,我设置的cookie在调用RedirectToAction()后直接丢失.幕后发生的事情是否使当前请求无效并创建一个新的cookie,导致cookie在被保存到磁盘之前丢失? 我知道如果您希望在重定向之后数据可用,则需要使用TempData,但Cookie是否相同?如果是这样,那
我遇到一个问题,我设置的cookie在调用RedirectToAction()后直接丢失.幕后发生的事情是否使当前请求无效并创建一个新的cookie,导致cookie在被保存到磁盘之前丢失?
我知道如果您希望在重定向之后数据可用,则需要使用TempData,但Cookie是否相同?如果是这样,那么将cookie值存储在TempData中然后再编写cookie似乎不是很难看吗? 更新: 我刚刚意识到cookie在请求结束时丢失了,如果我调用RedirectToAction()并不重要.所以现在问题是为什么cookie不会持续两个请求? (我更新下面的代码以显示我现在在做什么) public ActionResult DoSomething() { Response.Cookies["SomeCookie"].Value = "Jarified"; Response.Cookies["SomeCookie"].Expires = DateTime.UtcNow.AddDays(3); return View("SomeView"); } 更新 我使用默认模板创建了一个新的MVC项目.我修改了HomeController / Index操作以获得下面的代码.我第一次点击视图“未找到Cookie”按预期打印.但是,随后每次打印相同的消息.如果我删除设置过期日期的行,那么一切正常.我想这里真正的问题是为什么让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(); } 解决方法
原因
Response.Cookies["temp"].Expires = DateTime.UtcNow; 是不行的是它设置过去的过期cookie(至少对我而言). 当我将其更改为时,它可以工作 Response.Cookies["temp"].Expires = DateTime.UtcNow.AddDays(3); 将cookie expires属性设置为过去将删除cookie. 这段代码适合我: public ActionResult Index() { HttpCookie cookie = Request.Cookies["temp"]; if (cookie == null) { ViewData["Message"] = "Cookie Not Found"; Response.Cookies["temp"].Value = "This is a cookie: Welcome to ASP.NET MVC!"; Response.Cookies["temp"].Expires = DateTime.UtcNow.AddDays(3); } else { return RedirectToAction("Something"); } return View(); } public ActionResult Something() { HttpCookie cookie = Request.Cookies["temp"]; ViewData["Message"] = cookie.Value; return View(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 单选按钮而不是下拉列表在mvc 3应用程序?
- asp.net – 替换过时的System.Xml.XmlDataDocument?
- asp.net – 在窗口调整大小或在标签之间切换之前,IE7不会呈
- 4.翻译系列:EF 6 Code-First默认约定(EF 6 Code-First系列
- asp.net-mvc – 在我养成一个坏习惯之前需要建议
- asp.net – 为每个用户创建专用URL(ASP .net)
- asp.net-web-api – 在WebApi和MVC项目之间共享SignalR集线
- 获取一些401 – 访问我的ASP.NET MVC网站时未经授权的异常
- asp.net – 在Microsoft Windows Azure上设置网站的默认网页
- asp.net-mvc – 使用jQuery.post将多个参数发布到MVC Contr
推荐文章
站长推荐
- asp.net-mvc-3 – 如何从控制器外部访问登录用户
- 在ASP.Net ReportViewer中使用SSRS
- asp.net-mvc – 我可以在MVC 3中有/多个_Layout页
- asp.net-mvc – MVC – 如何在整个应用程序中实例
- 什么是ASP.NET-MVC 5.1中的ManageController.cs及
- asp.net – 如何防止重复的回发混淆我的业务层
- Asp.net从Https重定向到Http
- 使用ASP.NET MVC 3助手的标题属性的渲染跨度标签
- asp.net-mvc – ASP.NET MVC 4,迁移 – 如何在生
- asp.net核心 – ASP.NET核心 – 如何返回一个特定
热点阅读