这个时应用在投票里的,
每天只能投10次票。
在第一次投的时候,记录过期时间为DateTime.Now.AddDays(1);
但第2次投的时候我改了cookies的值,Expires就不好用了。怎么搞啊? 
===========================================
aa.aspx
<% @ page language="C#"%>
<%
int toupiao=0;
try{
toupiao=Convert.ToInt32(Request.Cookies["toupiao"].Value);
}
catch
{
toupiao=9;
        HttpCookie mycookies=new HttpCookie("toupiao");
        mycookies.Value=toupiao.ToString();
        mycookies.Expires=DateTime.Now.AddDays(1);
        Response.Cookies.Add(mycookies);
}
%>
<%
        HttpCookie mycookies1=new HttpCookie("toupiao");
        mycookies1.Value=(toupiao-1).ToString();
        Response.Cookies.Add(mycookies1);
%>
<%=Request.Cookies["toupiao"].Value%>
========================================================
我每次新开窗口计数又变成9了。
我设了1天后过期的。
怎么可以改cookies的值,但过期时间不能改,等过期了,在赋新的过期时间啊?

解决方案 »

  1.   

    仅靠Cookies作为参与过投票的依据,本来就是件愚蠢的事情,不要再思考下去了,换个方法吧。
      

  2.   

    投票不需要很严格,对禁用cookies的用户来说,他能一直投下去也无所谓。禁用cookies的用户毕竟是少数。
      

  3.   

    先判断cookie里是否存在这个值,没有的情况下再设置过期时间。int toupiao=0;
    try{
    toupiao=Convert.ToInt32(Request.Cookies["toupiao"].Value);
    }
    catch
    {
    toupiao=9;
    if( Request.Cookies["toupiao"] == null )
    {
            HttpCookie mycookies=new HttpCookie("toupiao");
            mycookies.Value=toupiao.ToString();
            mycookies.Expires=DateTime.Now.AddDays(1);
            Response.Cookies.Add(mycookies);
    }
    else
    Response.Cookies["toupiao"].value = toupiao.ToString();
    }
      

  4.   

    创建一个存放投票数的Cookies和存放过期时间的Cookies,试试看!
      

  5.   

    楼主的程序流程有点问题,最好不要用try catch来实现程序逻辑。可以用if等来实现,这种方式性能不好,而且一旦在catch中的代码出现了错误怎么捕获呢。