Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 饼干似乎永远不存在_Asp.net_Cookies - Fatal编程技术网

Asp.net 饼干似乎永远不存在

Asp.net 饼干似乎永远不存在,asp.net,cookies,Asp.net,Cookies,关于cookie,我面临一个奇怪的问题:我试图在用户第一次登录应用程序时使用用户id设置cookie,下次,如果cookie存在,则不再需要用户身份验证 为此,我使用以下代码: 要设置cookie,请执行以下操作: HttpCookie userCookie = new HttpCookie("UserCookie"); userCookie.Value = UserId.ToString(); userCookie.Expires = DateTime.Now.AddHours(1); Sy

关于cookie,我面临一个奇怪的问题:我试图在用户第一次登录应用程序时使用用户id设置cookie,下次,如果cookie存在,则不再需要用户身份验证

为此,我使用以下代码:

  • 要设置cookie,请执行以下操作:

    HttpCookie userCookie = new HttpCookie("UserCookie");
    userCookie.Value = UserId.ToString();
    userCookie.Expires = DateTime.Now.AddHours(1);
    System.Web.HttpContext.Current.Response.Cookies.Add(userCookie);
    
    HttpCookie UserCookie = System.Web.HttpContext.Current.Request.Cookies["UserCookie"];
    if (UserCookie != null)
    {
          // redirect the user to another screen inside the application
    } 
    
  • 要获取cookie,请执行以下操作:

    HttpCookie userCookie = new HttpCookie("UserCookie");
    userCookie.Value = UserId.ToString();
    userCookie.Expires = DateTime.Now.AddHours(1);
    System.Web.HttpContext.Current.Response.Cookies.Add(userCookie);
    
    HttpCookie UserCookie = System.Web.HttpContext.Current.Request.Cookies["UserCookie"];
    if (UserCookie != null)
    {
          // redirect the user to another screen inside the application
    } 
    
奇怪的是,我的cookie似乎不存在,并且用户总是被登录屏幕提示。当我尝试使用调试时,我觉得cookie不是空的,但它有一个空字符串值。我能做些什么


非常感谢

您是否试图用设置cookie的相同代码获取cookie?如果是这样,cookie将不存在。页面交付后,在用户浏览器上设置Cookie

另外,您能确认
UserID.ToString()
实际上不是空字符串吗


要正确测试,请在A页设置cookie,然后重定向到B页并在此处获取cookie。

用户ID的类型是什么?它是一个整数吗?是的,它有一个整数值。请尝试添加不只是一个小时的额外小时数。不要在时间上增加一个小时,试着增加7天。可能是浏览器(使用UTC或其他方式)错误地解释了时间。快速安全说明:我不知道您的完整实现,或者您是否考虑过这一点,但如果您的用户ID是连续的,并且以明文形式存储在cookie中,任何人都可以制作cookie,以无需密码即可按任何人的意愿登录。谢谢您的回复。我可以确认UserID.ToString()不是空字符串,我还尝试在登录页面中设置这个cookie,并在另一个页面中获取它,它工作得非常好。至于获取和设置部分,在登录页面中,我首先检查cookie是否已设置,如果未设置,我会尝试设置它。我真的很困惑。。。你说你在登录中设置了它,并且可以在另一个页面上完美地获得它?你是说下次你访问登录页面时cookie不存在吗?我最终成功地做到了这一点:似乎是因为我的cookie代码只有在某些变量不为null时才执行,而由于它们为null,我的cookie设置不正确。谢谢你的建议,尝试在另一个页面中获取cookie值,它帮助我找到了答案!谢谢不客气,很高兴一切正常。顺便说一句,不确定您是否意识到,但是当需要删除cookie时,Cookies.Delete(您的cookie)实际上不会从浏览器中删除它-您需要将过期日期设置为过去的日期,例如mycokie.Expires=Now.AddDays(-1)-然后设置cookie。它会在浏览器上杀死它。