如何分配cookie有效期?

时间:2015-06-09 18:52:22

标签: c# asp.net cookies

我正在尝试了解Cookie。但有一点我无法理解。希望你能帮我。

我写了一段简短的代码:

using System;
using System.Web;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Cookies["Test2"] == null)
            {
                Response.Cookies["Test2"]["Address"] = "Home";
                Response.Cookies["Test2"].Expires = DateTime.Now.AddSeconds(60);
            }

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Cookies["Test2"]["Address"] = "Work";
        }
    }
}

首先,我想检查是否有一个名为" Test2"的cookie。它创建一个名为" Test2"的cookie。它的失效日期是一分钟后创建的。

enter image description here

然后,我点击按钮,它传递if子句并将Address更改为Work。但是当我看到cookie的有效期已经过去了。

  

过期:浏览会话结束时

http://i.imgur.com/uNWPBRF.png

为什么这个到期日会改变?请你帮助我好吗?

1 个答案:

答案 0 :(得分:3)

您正在尝试修改Cookie,创建新Cookie ,并且由于您尚未指定 CreateGrid = function () { var grid = new OnDemandGrid({ collection: GridStore, columns: [ { field: "_id", label: "ID" }, { field: "_SectionID", label: "SpecID" }, { field: "_name", label: "Name" }, { field: "_number", label: "Number" }, { field: "_description", label: "Description" }, { field: "_url", label: "URL" } ] }, 'editGrid'); } ,因此会限于会话结束时。< / p>

ASP.NET Cookies Overview

  

您无法直接修改Cookie。相反,更改cookie   包括用新值创建一个新的cookie,然后发送   cookie到浏览器覆盖客户端上的旧版本。

此外:

  

如果您没有设置cookie的过期时间,则会创建cookie   它不存储在用户的硬盘上。相反,cookie是   作为用户会话信息的一部分进行维护。当用户   关闭浏览器,cookie被丢弃。

因此,您的选项要么不修改cookie值(使用某些其他机制,如DB),要么为每次修改指定不同的到期日期。