Sto usando il seguente codice per impostare un cookie nel mio asp.net mvc (C#) applicazione:Cookie non viene eliminato
public static void SetValue(string key, string value, DateTime expires)
{
var httpContext = new HttpContextWrapper(HttpContext.Current);
_request = httpContext.Request;
_response = httpContext.Response;
HttpCookie cookie = new HttpCookie(key, value) { Expires = expires };
_response.Cookies.Set(cookie);
}
ho bisogno di cancellare i cookie quando l'utente fa clic logout. Il cookie impostato non rimuove/elimina con Cancella/Rimuovi. Il codice è il seguente:
public static void Clear()
{
var httpContext = new HttpContextWrapper(HttpContext.Current);
_request = httpContext.Request;
_response = httpContext.Response;
_request.Cookies.Clear();
_response.Cookies.Clear();
}
public static void Remove(string key)
{
var httpContext = new HttpContextWrapper(HttpContext.Current);
_request = httpContext.Request;
_response = httpContext.Response;
if (_request.Cookies[key] != null)
{
_request.Cookies.Remove(key);
}
if (_response.Cookies[key] != null)
{
_response.Cookies.Remove(key);
}
}
Ho provato entrambe le funzioni di cui sopra, ma ancora il cookie esiste quando si tenta di controllare esiste.
public static bool Exists(string key)
{
var httpContext = new HttpContextWrapper(HttpContext.Current);
_request = httpContext.Request;
_response = httpContext.Response;
return _request.Cookies[key] != null;
}
Quale può essere il problema qui? o qual è la cosa che devo fare per rimuovere/eliminare il cookie?
Questo non è abbastanza. Dai un'occhiata al codice nella mia risposta qui sotto. –
@Ed - Il tuo codice fa esattamente lo stesso mio, a parte il fatto che ha un paio di righe non necessarie come il controllo della presenza di un oggetto appena istanziato (lo fa).Cosa pensi che questo manchi? –
Sì, il controllo null non è necessario. Ma ho trovato avevo bisogno di a entrambi: 'Rimuovi dal server (non influisce sul client) .Response.Cookies.Remove (chiave) ' scadono il client .Response.Cookies.Add (cookie) Altrimenti il cookie non viene mai effettivamente cancellato. A giudicare dal codice Microsoft e da altri esempi che ho visto, fare entrambi sembra essere il modo per garantire che il cookie venga effettivamente rimosso. –