我先用以下代码写入了Cookies
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Response.Cookies["pro"].Value = "第一次运行";
            Response.Cookies["pro"].Expires = DateTime.MaxValue;
        }
        Response.Write(Request.Cookies["pro"].Value);
    }
然后F5运行,显示:第一次运行
关闭页面后,我把“第一次运行”改成“第二次”,然后F5,可这个时候页面还是显示“第一次运行”
刷新后才会显示更改后的“第二次”这个是为什么啊,为什么非要刷新才更改呢

解决方案 »

  1.   

    呵呵,我发现是.NET偷懒,还是捡的上一次的,你这写它就不会了,在Response.Write(Request.Cookies["pro"].Value);
    后加Response.Cookies["pro"].Expires = DateTime.MinValue;
      

  2.   


    Response.Write(Request.Cookies["pro"].Value); 这句我不明白啊
    怎么把接受的值有重新写上去呢,我要更改里面的内容啊
      

  3.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Response.Cookies["pro"].Value = "第一次运行";
                Response.Cookies["pro"].Expires = DateTime.MaxValue;
            }
            Response.Write(Request.Cookies["pro"].Value);
            Response.Cookies["pro"].Expires = DateTime.MinValue; 
        }
    就可以了啊
      

  4.   

    Response.Cookies["pro"].Expires = DateTime.MaxValue;
    你用了这个时间机制,没有超过时间,当然作废了。得作废 这个时间,后才可以更新。
      

  5.   

    然后F5运行,显示:第一次运行  
    ===========================
    执行if (!Page.IsPostBack)里的代码关闭页面后,我把“第一次运行”改成“第二次”,然后F5,可这个时候页面还是显示“第一次运行”  
    ===============================
    执行if (!Page.IsPostBack)里的代码,准备写cookie到客户端,但是,这个时候客户端还没有改,
    Web服务器与客户端并不是交互式的,必须等到页面到客户端浏览器呈现才能写到客户端,也就是说你现在
    Request.Cookies["pro"].Value还是得到刚才的值,因为客户只发了一次请求,而你的响应还没写到,
    怎么能读到新值呢?
    刷新后才会显示更改后的“第二次” 
    ==========
    这个不说了
      

  6.   

    不可能直接得到这次赋的Cookie值并输出,替代的办法是赋值的时候用变量替代,然后输出这个变量protected void Page_Load(object sender, EventArgs e)
    {
        string value = string.Empty;//这个value应该是因为某种原因可能有也可能没有的    if(!IsPostBack)
        {
            value = "第四次运行";
            Response.Cookies["pro"].Value = value;
            Response.Cookies["pro"].Expires = DateTime.MaxValue;
        }    if (!string.IsNullOrEmpty(value))
        {
            Response.Write(value);
        }
        else
        {
            Response.Write(Request.Cookies["pro"].Value);
        }
    }