2012-02-09 52 views
1

我覺得我被餅乾怪物吃掉了。我刪除了cookies,他們馬上回來。就在「GoToPublicHome()」調用之前不會刪除的餅乾

protected void Page_Load(object sender, EventArgs e) 
    { 
     DeleteCookie("UserId"); 
     DeleteCookie("UserName"); 

     Session.Abandon(); 
     GoToPublicHomePage(); 
    } 

    private void DeleteCookie(string name) 
    { 
     if (Request.Cookies[name] != null) 
     { 
      HttpCookie cookie = new HttpCookie(name); 
      cookie.Expires = DateTime.Now.AddDays(-1); 
      Response.Cookies.Add(cookie); 
     } 
    } 

,我檢查Request.Cookies時和用戶ID和用戶名餅乾響應: 在註銷,我執行該代碼。

在GoToPublicHome調用後立即執行的Global.asax - > Session_Start代碼中,它們已經回來了......就像一個壞的便士一樣。

+0

看來你有2個問題在這裏:爲什麼它會創建一個新的Cookie?爲什麼沒有設定到期日?這是對的嗎。你能否提供更詳細的問題? – JScoobyCed 2012-02-09 02:26:18

回答

1

您編寫的代碼指示.Net創建一個新的HttpCookie,而不是創建「僅當不存在」。 在MSDN頁面上有一個示例: http://msdn.microsoft.com/en-us/library/system.web.httpcookie.aspx

+0

我已經大幅修改了代碼,但仍然遇到問題。感謝您能給予的任何幫助。 – 2012-02-09 21:21:14

+0

當用戶激活「GoToPublicHomePage」操作時,是否與設置Cookie的頁面位於相同的上下文中?即:您點擊www.example.com/login.html上的登錄,然後單擊www.example.com/private/index.html上的註銷。您需要檢查您刪除的Cookie的「路徑」屬性與您設置的Cookie相同的路徑 – JScoobyCed 2012-02-11 01:18:34

0

Response.Cookies.Remove(name)

+0

嘗試了我能想到的那個和每個變化。直到我將它們放在那裏之前,Response並不包含任何cookie。我已經嘗試了Request.Cookies.Remove,但是我讀的所有內容都指向將過期日期設置爲刪除它們的方式。重新出現的cookie沒有過期日期,因此它們看起來像是sesion cookie而不是域cookie。 – 2012-02-09 21:43:19