【问题标题】:.net HttpCookie class / session cookie questions.net HttpCookie 类/会话 cookie 问题
【发布时间】:2010-10-12 11:14:09
【问题描述】:

我对如何将常规的 HttpCookie 对象制作为在会话结束时过期的 cookie 很感兴趣。我对某人 showing me HttpContext.Session 不感兴趣。与普通 cookie 相比,会话 cookie 在响应标头中的外观如何?如何修改 HttpCookie 以在会话结束时过期?谢谢!

【问题讨论】:

    标签: .net session cookies session-state


    【解决方案1】:

    cookie 过期:

    • 会话 cookie - 过期日期应为 DateTime.MinValue,即 1/1/0001 00:00:00
    • 普通 cookie(限时)- 到期日期是等于或大于当前 DateTime.Now 的任何未来日期。
    • 已删除 cookie - DateTime.MinValue 和 DateTime.Now 之间的任何时间。

    要将 cookie 更改为会话 cookie,只需分配 MinValue。

    httpCookie.Expires = DateTime.MinValue;
    

    如果您的 cookie 是新的。 DateTime 的默认值应为 DateTime.MinValue,无需设置。

    呼叫MeLaNN

    【讨论】:

      【解决方案2】:

      过期时间为 DateTime.MinValue (1/1/0001) 的 cookie 将在会话结束时过期。这是 asp.net 中 cookie 的默认到期日期。

      您可以通过将过期日期设置为“现在”之前的某个时间(DateTime.Now.AddDays(-1d))来强制从客户端立即删除 cookie,在这种情况下,它将在到达客户端时被删除。

      如果在编码 HttpCookie 时我们有可空类型,我的猜测是空日期将等同于基于会话的 cookie,其他任何内容都将转换为过期值,但事实并非如此。

      【讨论】:

      • 看起来不设置过期(在响应标头中)有同​​样的效果?
      • 我还没有测试过,所以我不能肯定。最近花了很多时间为我们的项目框架处理一个 cookie 库。我个人现在更喜欢水果。
      【解决方案3】:

      会话 cookie 只是没有设置任何到期日期的 cookie。

      Response.Cookies.Add(new HttpCookie("name", "value"));
      

      或:

      Response.Cookies["name"] = "value";
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多