今天碰到一个奇怪的问题,在使用FormsAuthenticationTicket保存cookies的时候,无法在电脑里面永久的生成cookies文件。具体代码如下:
string loginName = "test";
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, loginName, DateTime.Now, DateTime.Now.AddHours(3), true, "hello world", "/");
string authTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie coo = new HttpCookie(FormsAuthentication.FormsCookieName, authTicket);
//coo.Expires = DateTime.Now.AddHours(3);
Response.Cookies.Add(coo);后来发现一定要把coo.Expires = DateTime.Now.AddHours(3);这句话加上才可以生成cookies文件到电脑中。为何呢?有哪位大虾知道原因?谢谢

解决方案 »

  1.   

    不设过期时间Expires的话,生成的是会话cookie,只对当前会话有效,不会保存到文件的
      

  2.   

    不写cookie的过期时间是不会保存到客户端的,如果关闭浏览器就过期了
      

  3.   

    FormsAuthenticationTicket的第四个参数 DateTime.Now.AddHours(3)不就是设置过期时间吗?为何还要再单独设置一遍?
      

  4.   

    有好几个过期时间,要区分清楚
    FormsAuthenticationTicket里设置的只是票据的过期时间,Cookie的过期时间跟这个无关,要在HttpCookie里设