protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
        AddCookie("tt");
        }
    }
    private void AddCookie(string value,System.Web.UI.Page page)
    {
        HttpCookie Cookie = new HttpCookie("test");
        Cookie.Value = value;
        Cookie.Expires = DateTime.Now.AddDays(1);
    page.Response.Cookies.Add(Cookie);    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write(Response.Cookies["test"].Value+"<br>");
        Response.Write(Request.Cookies["test"].Value);    }
为什么Response.Cookies[""].Value会清空 Cookie 的值

解决方案 »

  1.   

    不是被清空了,而不是根本就没到Request.Cookies里面去, 下次request才可以通过Request.Cookies拿得到。Response.Cookies 和 Request.Cookies 是两个不同的容器
      

  2.   

    jzywh:
    不是被清空了,而不是根本就没到Request.Cookies里面去, 下次request才可以通过Request.Cookies拿得到。我还是不明白下次,我试了好多次都没拿到
      

  3.   

        protected void Page_Load(object sender, EventArgs e) 
        { 
            if(!Page.IsPostBack) 
            { 
            AddCookie("tt"); 
            } 
        } 
        private void AddCookie(string value) 
        { 
            HttpCookie Cookie = new HttpCookie("test"); 
            Cookie.Value = value; 
            Cookie.Expires = DateTime.Now.AddDays(1); 
        Response.Cookies.Add(Cookie);     } 
        protected void Button1_Click(object sender, EventArgs e) 
        { 
            Response.Write(Response.Cookies["test"].Value+" <br>"); 
            Response.Write(Request.Cookies["test"].Value);     } 
      

  4.   

    protected void Button1_Click(object sender, EventArgs e)  
    {  
        Response.Write(Response.Cookies["test"].Value+"  <br>"); 
        //这个肯定是拿不到的, 应为Button_Click事件执行时page肯定是postback的,
        //所以Page_load里面并没有执行  AddCookie("tt");    Response.Write(Request.Cookies["test"].Value);
       //这个地方应该是拿得到的,应为postback时浏览器会把页面第一次load时写入的tt cookie传给服务器端
      

  5.   

    protected void Button1_Click(object sender, EventArgs e)   
    {   
        Response.Write(Response.Cookies["test"].Value+"   <br>");  
        //这个肯定是拿不到的, 应为Button_Click事件执行时page肯定是postback的, 
        //所以Page_load里面并没有执行  AddCookie("tt");     Response.Write(Request.Cookies["test"].Value); 
       //这个地方应该是拿得到的,应为postback时浏览器会把页面第一次load时写入的tt cookie传给服务器端 

    jzywh:
    你好
    protected void Button1_Click(object sender, EventArgs e)   
    {   
        Response.Write(Response.Cookies["test"].Value+"   <br>");  
       //这个地方是为了证明它会清空    Response.Write(Request.Cookies["test"].Value); 
       //这个不是应该而是根本拿不到.关键就在这...
    //请指点....期待中..