2017-10-16 15 views
0

Je ne parviens pas à définir un cookie persistant. Cela devient une session seulement.Le délai d'expiration du cookie ne fonctionne pas en C#

Je sais que le même problème a demandé here mais je n'ai pas pu le réparer même si j'ai fait toutes les étapes.
(Impossible de tester avec Fiddler).

Mon code est:

/// Default.aspx.cs methods : 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (! Cookies.CookieExist("kuki")) 
    { 
     Cookies.CreateCookie("kuki"); 
    } 
    Fill(); 
}  

private void Fill() 
{ 
    string a = Cookies.GetCookieValue("kuki", "key"); 

    if (!a.Contains("data")) 
    { 
     return; 
    } 
    // codes for a 
} 

protected void ButtonAdd_Click(object sender, EventArgs e) 
{ 
    if (TextBox1.Text != string.Empty) 
    { 
     Cookies.InsertCookie("kuki", "key", TextBox1.Text); 
    }   
} 


/// Cookie class methods: 

public static void InsertCookie(string Cookie, string Key, string Data) 
{ 
    HttpCookie Kuki = HttpContext.Current.Request.Cookies[Cookie]; 
    Kuki[Key] = Data; 
    HttpContext.Current.Response.SetCookie(Kuki); 
} 

public static bool CookieExist(string Cookie) 
{ 
    HttpCookie cookie = HttpContext.Current.Request.Cookies[Cookie]; 
    if (cookie == null) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

public static void CreateCookie(string Cookie) 
{ 
    HttpCookie cookie = new HttpCookie(Cookie); 
    cookie.Expires = DateTime.Now.AddYears(1); 
    HttpContext.Current.Response.Cookies.Set(cookie); 
} 

public static string GetCookieValue(string CookieName, string CookieKey) 
{ 
    HttpCookie cookie = HttpContext.Current.Request.Cookies[CookieName]; 
    try 
    { 
     if (cookie != null) 
     { 
      return cookie[CookieKey].ToString(); 
     } 
     else 
     { 
      return ""; 
     } 
    } 
    catch (Exception) 
    { 
     return ""; 
    }   
} 

J'utilise Chrome.
Comment puis-je résoudre ce problème?

Mise à jour:

Ajout d'un bouton et méthodes InsertCookie.

Répondre

0

Je vois ce qu'est l'erreur. J'essayais de stocker des données sur mon cookie. Mais je ne devrais utiliser mon cookie que pour une méthode me souvenir, par exemple. Désolé.

1

Au lieu de

public static void CreateCookie(string Cookie) 
{ 
    HttpCookie cookie = new HttpCookie(Cookie); 
    cookie.Expires = DateTime.Now.AddYears(1); 
    HttpContext.Current.Response.Cookies.Set(cookie); 
} 

Essayez

public static void CreateCookie(string Cookie) 
{ 
    HttpCookie cookie = new HttpCookie(Cookie); 
    cookie.Expires = DateTime.Now.AddYears(1); 
    HttpContext.Current.Response.Cookies.Add(cookie); //<-- Add 
} 

Utilisez Add pour ajouter un cookie. Utilisez uniquement Set lorsque vous devez mettre à jour un cookie qui a déjà été écrit dans la réponse (ce qui n'est pratiquement jamais le cas).