lunes, 31 de agosto de 2015

Etiquetado como:

Cookies duplicadas o que no se borran

C# y Programación
Artículo para: Programadores de C# de cualquier nivel


Hoy me he encontrado con una de esas "marcianadas" que me encantan, de esas que te hacen perder media mañana y darte cabezazos contra la pared... Vamos, de las que a diario tenemos que soportar los programadores.

Resulta que las "cookies", esas "galletitas" que se utilizan en el 99% o quizá en el 100% de las páginas web actuales (bien, bien, puede que estos datos me los haya sacado de la manga, pero se usan muchísimo) son un dolorcito de huevos. Y no es porque en sí entrañen una dificultad especial, no. Es por un purete que parece haber en la enumeración Request.Cookies y Response.Cookies.

¿Cómo detectar que estamos comentiendo un error? Bien, el primer síntoma es el hecho de ver más de una cookie con el mismo nombre en las enumeraciones citadas, es decir, si analizamos el contenido de Request.Cookies o de Response.Cookies y detectamos en la propiedad AllKeys dos o más veces el mismo nombre, quiere decir que la estamos literalmente "cagando".

Busca en tu código algo como lo siguiente: this.Request.Cookies["nombreDeTuCookie"] == null this.Response.Cookies["nombreDeTuCookie"] == null.

Y ahora te digo que ésto no funciona. ¿Y por qué? - te preguntarás. En el momento que llamas al indexador this.Response.Cookies["nombreDeTuCookie"]  y sin previo aviso te crea una nueva cookie en blanco (sin información) con el mismo nombre.

Entonces, ¿cómo puedo borrar una cookie dado que esto sucede? Te lo documento a continuación con un ejemplo práctico:

Código que falla:

if (this.Response.Cookies.[cookieName] != null)
{
      this.Response.Cookies.Remove(cookieName);
}

Código que funciona:

if (this.Response.Cookies.AllKeys.Contains(cookieName))
{
       this.Response.Cookies.Remove(cookieName);
}

Este conocimiento lo puedes aplicar a otros ámbitos de las cookies, solo ten cuidado de usar la propiedad AllKeys para chequear la existencia de la cookie y es más que suficiente.

¡Espero haber sido de ayuda!

Unknown

Author y editor

0 comentarios:

Publicar un comentario

 

Webs amigas:

  • Copyright © Los vericuetos .NET 2015
    Distributed By My Blogger Themes | Designed By Templateism