2013-12-17 101 views
0

我有一个方法调用docount()无法设置cookie的值

代码

if (Request.Cookies["searchCounter"] != null) 
{ 
    Response.Write("cookie old cookie "); 
    int scvalue = int.Parse(Request.Cookies["searchCounter"].Value); 
    int sc = scvalue + 1; 
    Request.Cookies["searchCounter"].Value = sc.ToString(); 
    Request.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(2); 

} 
else 
{ 
    Response.Write("new cookie "); 
    Response.Cookies["searchCounter"].Value = "1"; 
    Response.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(2); 
} 


Response.Write("Cookie value: " + Request.Cookies["searchCounter"].Value); 

由于某种原因,它总是击中else语句。任何想法我做错了什么。

+0

还设置Cookie上的'.Domain',正确的域名,并为我在本地再试 – Aristos

+0

它工作正常。在第一次进入else块,但随后进入主要块 –

+0

顺便说一下,在IF块中,您正在更新请求中的searchCounter cookie,而不是响应。它应该在响应中完成,否则这个scvalue + 1将不会反映在cookie中 –

回答

2

应该是这样的:

if (Request.Cookies["searchCounter"] != null && Request.Cookies["searchCounter"].Value != "") 
{ 
    // some code... 
    Response.Cookies["searchCounter"].Value = "some data"; 
    Response.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(1); 
} 
else 
{ 
    Response.Cookies["searchCounter"].Value = "some data"; 
    Response.Cookies["searchCounter"].Expires = DateTime.Now.AddDays(1); 
} 

读自Request和写入Response

+0

您的回答是正确的,但您为什么不使用HttpCookie类? – Jorge

+0

@Jorge - 感谢您的编辑。我使用它,因为它的工作原理,我不需要cookie对象。另外,两条线而不是四条。 – Rudy