我用Forms认证,用下面的代码将cookie的失效时间设置为3天             if( ValidateUser( txtUserName.Text , txtPassword.Text )) 
            { 
                HttpCookie  authenticationCookie=FormsAuthentication.GetAuthCookie(txtUserName.Text,true); 
                authenticationCookie.Expires=DateTime.Now.AddDays(3);//3天 
                Response.Cookies.Add(authenticationCookie); 
        Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text,true)); 
            } 但是实际运行结果是:cookie的失效时间仍然是30分钟(这个是我在web.config中设置的),而不是3天 。 为什么那?该如何解决,请指教,谢谢

解决方案 »

  1.   

    to marey_marey111web.config设置的是全部用户的,我需要每个用户可以自己选择cookie过期时间。
    在代码中写应该可以覆盖web.config中的设置的。
      

  2.   

    写一个FormsAuthenticationTicket 的保存到cookie看看
      

  3.   

    顶上去,
    web.config内设置了平滑过期slidingExpiration 为false
    还是无效,请高手帮忙,谢谢
      

  4.   

    实际上,当你把应用程序放到许多租用的asp.net空间上时,往往7、8分钟状态就失效。iis通常会在20分钟后回收应用程序。服务器可以配置为每个应用程序使用固定量的内存(例如10%)、cpu时间(例如5%)、连接数(例如150)等,当超过指标时就会重新启动进程。web服务各种故障也会自动重启进程,达到自动维护的目的。当你修改了应用程序的关键文件,例如web.config、app_code下面的文件、bin下面的文件、删除了目录等时,也会重启。
    根据那些入门“范例”来写实际的应用程序者有些“可怜”,那些范例往往只是用来体验几行代码、一个简单控件的,一旦实际应用根本不是那样编程的,因为你的程序是在没有建立“确保可靠运行”的编程技术下开发的。建立一个观念——web应用平均每5分钟必重启一次,以此前提开发你的应用软件,不要以为一定可以找到特别高级、不会重启的web应用服务器环境。
      

  5.   

    sorry!这主要是关于session失效的时间的解释。
      

  6.   

    sorry,看错了,我用的是cookie,在客户端,不会收到服务器的影响的。
      

  7.   

    /// <summary>
            /// 添加cookie或更改cookie的值,不需要判断cookie是否存在的
            /// </summary>
            /// <param name="cookieName">cookie的名字</param>
            /// <param name="value">cookie的值</param>
            /// <param name="days">过期的天数,可以是负数</param>
            public static void Add(string cookieName, string value, int days)
            {
                HttpCookie cookie = new HttpCookie(cookieName);
                cookie.Value = value;
                cookie.Expires = DateTime.Now.AddDays(days);
                HttpContext.Current.Response.Cookies.Add(cookie);
            }这是添加的方法,同样在web.config文档中设置一下过期时间
      

  8.   

    C:\Documents and Settings\[UserName]\Cookies
    下去找文件,看是否3天后失效?
      

  9.   

    做个测试先
    先把错误缩小一个范围首先.你写完cookie之后
    再读出这个cookie的值和失效时间
    是否是正确的如果这一步不正确.那么。你可以
    代码创建一个cookie,直接把asp.net的cookie复制一下,
    好像就一个hash值和一个名字. 很简单的.
    再自己把这个cookie写进去.再去测试如果是正确的.那么再使用你的IE在半小时测试一下
    Cookie是可以用第三方插件删除的.(清除上网痕迹)
    我认为极大的可能是被删掉了
      

  10.   

    这样Cookie永远都不能失效的 应为DateTime.Now.AddDays(3);是随时间改变的!!!