3

我正在一个网站上工作,该网站在所有页面上都有一些共享代码用于导航。在共享代码中,我正在读取一个确定要显示哪个导航的 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;
        }
4

1 回答 1

0

我认为这是cookie“路径”属性的问题。也许当您将 cookie 写入客户端时,您将“路径”设置为服务器上的子文件夹。并且您的 2 页存储在该文件夹之外。例如,当你写 cookie 时:

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

而您的其他 2 页存储在"/folder2". 在这种情况下,浏览器不会发送这两个页面的 cookie,这就是为什么你在服务器端得到 null 的原因。

于 2013-06-11T15:20:23.987 回答