2016-09-30 2 views
0

Ich habe ein Problem mit ASP.NET Cookies zwischen Anfragen verloren gehen.ASPX Plätzchen verloren

Ich habe eine ASCX Steuerung, die mehrere Filterungs Ankreuzfelder aufweist. Ich kann diese Kontrollkästchen aktivieren/deaktivieren und klicke dann auf. In dieser Methode applyFilters setze ich Cookies basierend darauf, ob die Kontrollkästchen aktiviert/deaktiviert sind. Der Code, der dies tut, ist:

public void setFilterCookie(string name, string val) 
    { 
     if (!String.IsNullOrEmpty(val) && (val != null && !val.Equals("-1"))) 
     { 
      if (request.Cookies[name] != null) 
      { 
       HttpCookie myCookie = new HttpCookie(name); 
       myCookie.Expires = DateTime.Now.AddDays(-2d); 
       response.Cookies.Add(myCookie); 
       request.Cookies.Remove(name); 
      } 

      HttpCookie cookie = new HttpCookie(name, val); 
      cookie.Expires = DateTime.Now.AddDays(5);   
      response.Cookies.Add(cookie); 
     } 
     else 
     { 

      if (request.Cookies[name] != null) 
      { 
       HttpCookie myCookie = new HttpCookie(name); 
       myCookie.Expires = DateTime.Now.AddDays(-2d); 
       response.Cookies.Add(myCookie); 
       request.Cookies.Remove(name); 

      } 
     } 
    } 

Nachdem die Cookies gesetzt werden, ich ein Raster aus dem übergeordneten Container der Steuerung Databind will. In diesem databind Verfahren lese ich die Cookies der folgenden Methode:

public string getCookie(string cookieName) 
    { 
     if (isNotNullOrEmpty(cookieName)) 
      return request.Cookies[cookieName].Value.ToString().Trim(); 
     else 
      return null; 
    } 

Das Problem ist, dass, wenn ich die Cookies setze ich die Werte gesetzt werden (zB Response.Cookies [ „Domain“] sehen = "5"), aber wenn ich sie lese, ist der Wert string leer.

Kann mir jemand sagen, was falsch ist?

Danke

Antwort

0

Sie nicht Anforderung Cookies Entfernen und Hinzufügen von Antwort Cookies mit dem gleichen Namen mehrmals sein sollte. Das sollte funktionieren.

public void setFilterCookie(string name, string val) 
    { 
     var cookieValue = string.Empty; 
     var expires = 0; 
     if (!string.IsNullOrWhiteSpace(val) && !val.Equals("-1")) 
     { 
      cookieValue = val; 
      expires = 5; 
     } 
     else 
     { 
      expires = -2; 
     } 

     var cookie = new HttpCookie(name, cookieValue) {Expires = DateTime.Now.AddDays(expires)}; 
     System.Web.HttpContext.Current.Response.Cookies.Add(cookie); 
    } 
+0

arbeiten Dies gilt nicht. Ich verliere immer noch die Cookie-Werte –