2013-05-17 75 views
3

我正在使用跨所有页面进行导航的共享代码的网站。在共享代码中,我正在读取一个确定要显示哪个导航的cookie。 (不同的客户获得不同的体验)。在设置Cookie后,我可以逐页导航并使用Cookie来确定显示哪个导航,以便客户始终在每个页面上看到相同的导航。这在除了2之外的所有13页上完美地工作。出于某种原因,当读取cookie时它总是返回null,但如果我回到其他页面之一,cookie仍然存在。考虑到它是在所有页面上阅读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; 
     } 
+0

你有代码在哪里设置cookie? – Matt

回答

0

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

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

和你的其他两页都存储在"/folder2"。在这种情况下,浏览器不会发送这2页的cookie,这就是为什么你在服务器端得到空值。

相关问题