Sto andando fuori di testa per questo. Posso scrivere su un cookie e poi leggerlo di nuovo. Ma ad un certo punto, voglio aggiornare il valore che detiene. Ogni volta che prendo di nuovo il cookie, ottengo il valore iniziale, non quello aggiornato. Di seguito è riportato il codice che utilizzo per scrivere/aggiornare e leggere il cookie.Impossibile aggiornare i cookie in ASP.NET
private static HttpCookie WriteCookie(Guid siteId, string siteName)
{
var cookie = HttpContext.Current.Request.Cookies.Get("UserSettings");
if(cookie != null) {
cookie.Value = EncryptObject(new UserSettingsModel { SiteID = siteId, SiteName = siteName });
HttpContext.Current.Response.Cookies.Set(cookie);
}else {
cookie = new HttpCookie("UserSettings") { Path = "/", Expires = DateTime.Now.AddDays(1), Value = EncryptObject(new UserSettingsModel { SiteID = siteId, SiteName = siteName }) };
HttpContext.Current.Response.Cookies.Add(cookie);
}
return cookie;
}
public static UserSettingsModel GetUserSettings(string username = null)
{
var cookie = HttpContext.Current.Request.Cookies.Get("UserSettings");
if (cookie == null || string.IsNullOrEmpty(cookie.Value))
{
cookie = ResetUserSettings();
}
var userSettings = DecryptObject<UserSettingsModel>(cookie.Value);
if (userSettings != null)
{
var siteId = userSettings.SiteID;
var siteName = userSettings.SiteName;
return new UserSettingsModel { SiteID = siteId, SiteName = siteName };
}
throw new SecurityException("You have no site attached to your user. Contact an administrtor.");
}
GetUserSettings
restituisce sempre il valore che il cookie è stato inizialmente creato con. Cosa c'è che non va?
EDIT:
Ho provato a chiamare WriteCookie direttamente da un metodo in un controller. Il cookie era ora impostato. Di solito chiamavo WriteCookie tramite una richiesta Ajax. Ora, devo davvero scrivere il cookie usando JavaScript, o posso in qualche modo farlo solo usando WriteCookie?
Grazie!
Hai controllato cosa viene effettivamente inviato usando il violinista? Guarda l'espirazione e il percorso in particolare. – Oded
Sto utilizzando il browser Chrome e, utilizzando gli strumenti di sviluppo integrati, posso vedere che il valore del cookie non viene mai aggiornato. Mi chiedo perché – Andreas
Guarda le intestazioni di richiesta e risposta per vedere cosa sta succedendo. – Oded