2013-05-17 72 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,這就是爲什麼你在服務器端得到空值。

相關問題