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

时间:2013-05-17 23:40:13

标签: c# asp.net-mvc-3 cookies

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

1 个答案:

答案 0 :(得分:0)

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

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

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