cookie在某些页面上为空,但在其他页面上不为空

本文关键字:其他 cookie | 更新日期: 2023-09-27 18:14:16

我正在一个网站上工作,该网站在所有页面上都有一些用于导航的共享代码。在共享代码中,我正在读取一个cookie,该cookie决定要显示哪个导航。(不同的客户会有不同的体验)。设置了cookie后,我可以从一个页面导航到另一个页面,并使用cookie确定要显示哪个导航,这样客户在每个页面上都能看到相同的导航。除了2页外,这在所有13页上都可以完美地工作。由于某种原因,它在读取cookie时总是返回null,但如果我返回到其他页面之一,cookie仍然存在。考虑到这是在所有页面上读取cookie的完全相同的代码,我对此感到非常困惑。知道为什么会这样吗?

谢谢,

朗达

if (_httpContext != null && _httpContext.Request.Cookies["MyNav"] != null)
        {
            HttpCookie navigationCookie = HttpContext.Current.Request.Cookies["MyNav"];
            topNavDlpCatIdFromCookie = navigationCookie != null &&
                                        Int32.TryParse(navigationCookie["categoryId"], out topNavDlpCatId)
                                            ? topNavDlpCatId
                                            : 0;
        }

cookie在某些页面上为空,但在其他页面上不为空

我认为这是cookie "path"属性的问题。也许当您将cookie写入客户端时,您将"路径"设置为服务器上的子文件夹。你的两页就存储在那个文件夹之外。例如,当你写cookie:

Response.AppendCookie(new HttpCookie("MyNav","yourvalue"){path = "/folder1"});

另外2个页面存储在"/folder2"上。在这种情况下,浏览器不会发送这两个页面的cookie,这就是为什么你在服务器端得到null。