【问题标题】:Asp.net Couldn't get the updated CookiesAsp.net 无法获取更新的 Cookie
【发布时间】:2017-01-26 14:24:46
【问题描述】:

使用 Cookie 更新所需的功能,因为它已通过会话实现。 在我的场景中,我在操作方法中添加/更新 Cookie,当部分视图呈现时,它会获取 cookie 的先前数据。一旦页面重新加载,它就会显示更新的数据。

动作方法

Response.Cookies["TColumns"].Value = string.Join(",", displayListCol); ;
Response.Cookies["TColumns"].Expires = DateTime.Now.AddDays(10);
Response.Cookies["TColumns"].Domain = null;

局部视图

<%
List<string> selectedColumns = Request.Cookies["TColumns"].Value.ToString().Split(',').ToList();
//Some code
%>

在 asp.net 应用程序中按照这些 MSDN 链接到 writeread cookie。

谢谢!

【问题讨论】:

    标签: c# asp.net asp.net-mvc cookies


    【解决方案1】:

    当您设置 cookie 时,它​​实际上会添加一个响应标头。当客户端收到响应并解析标头时,它会在本地创建 cookie。在下一个请求中,客户端将使用先前设置的 cookie 设置请求标头。只有这样才能在服务器上看到 cookie。

    在您的代码中,您正在设置 cookie 并尝试在同一个请求中读取它。 cookie 尚未设置,因此您还无法读取它。客户端必须有一个新的请求才能读取 cookie。这就是为什么您的代码在页面刷新后就可以工作的原因。避免手动刷新页面的一种快速方法是在设置 cookie 后重定向。不管怎么处理,设置完cookie后都需要另外请求读取。

    【讨论】:

    • 经过一些研究,在我看来,在重定向中保存 cookie 并不是一种安全的方法。 stackoverflow.com/questions/5366635/…
    • 对我来说,我也通过更新 Request 对象解决了这个问题...Request.Cookies["TColumns"].Value = "Updated Value";
    • 我不是说在重定向中设置cookie,而是在设置cookie之后进行重定向。要点很简单,无论您如何实现它,客户端必须在您设置的 cookie 生效之前发出另一个请求。重定向只是实现该目标的最简单方法,因为它会导致客户端发出新请求。
    • 获取最新的cookie好像是额外的重定向,肯定会影响应用效率!
    • 我一定会在未来需要时重定向到您的建议。
    猜你喜欢
    • 2012-02-13
    • 2014-10-31
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多