Foros del Web » Programando para Internet » ASPX (.net) »

Problema con las Cookies

Estas en el tema de Problema con las Cookies en el foro de ASPX (.net) en Foros del Web. Hola a todos, Estoy desarrollando una aplicación asp.net con VB y me ha surgido un problema. Creo e inicializo una Cookie en una clase del ...
  #1 (permalink)  
Antiguo 14/10/2008, 07:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Problema con las Cookies

Hola a todos,

Estoy desarrollando una aplicación asp.net con VB y me ha surgido un problema.

Creo e inicializo una Cookie en una clase del directorio App_Code.
Código:
Dim c_elemento As HttpCookie = New HttpCookie("c_elemento")     
            c_elemento.Values.Add("codigo", elemento.codigo)
            c_elemento.Values.Add("nombre", elemento.nombre)
            c_elemento.Values.Add("descripcion", elemento.descripcion)
System.Web.HttpContext.Current.Response.Cookies.Add(c_elemento)
Después, en el método Page_Load de un formulario leo la Cookie para inicializar algunos controles.
Código:
Dim c_elemento As HttpCookie =  Request.Cookies.Get("c_elemento")
                Me.txtNombre.Text = c_elemento.Values.Get(1)
                Me.txtDescripcion.Text = c_elemento.Values.Get(2)
Hasta aquí todo correcto

Cuando en este último formulario utilizo un botón para guardar algunos valores. En el evento, vuelvo a leer la cookie pero me aparece en blanco.
Código:
Dim c_elemento As HttpCookie =  Request.Cookies.Get("c_elemento")
              elemento.nombre = c_elemento.Values.Get(1)
              elemento.descripcion = c_elemento.Values.Get(2)
Alguien puede decirme si mis pasos son correctos o... darme alguna pista de en qué estoy fallando?

Última edición por Sil_va; 14/10/2008 a las 08:17
  #2 (permalink)  
Antiguo 14/10/2008, 07:45
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Problema con las Cookies

en tu codigo del appcode porq no haces

HttpContext.Current.Response.Cookies.add(c_element o)
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 14/10/2008, 08:16
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema con las Cookies

Sí, lo hago, pero se me olvidó añadirlo en el Post. lo corrijo para dejarlo tal cual lo tengo en la aplicación.
Perdón por el fallo
  #4 (permalink)  
Antiguo 14/10/2008, 08:48
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Problema con las Cookies

puedes poenr tu codigo que hace las modificaciones de la cookie o el q salva los datos en alguno de los pasos debe estar perdiendose la cookie o tu response se este limpiando o cerrando.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 14/10/2008, 09:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema con las Cookies

Hola de nuevo,

A continuación te muestro el código que tengo en el Page_Load del formulario que me está dando problemas

Código:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            cargarDatosProyecto()
        End If
    End Sub


    Private Sub cargarDatosProyecto()
        Dim codProy As String = ""
        Dim coger_MC_Proyecto As HttpCookie = Request.Cookies.Get("GestProy_Proyecto")
        ' Leer valores de una Cookie múltiple
        If Session("crearProyecto") = False Then
            ' Si existe el nombre ya estaba creado
            Me.txtNombre.Text = coger_MC_Proyecto.Values.Get(1)
            Me.txtDescripcion.Text = coger_MC_Proyecto.Values.Get(2)
            Me.txtPlanInicial.Text = coger_MC_Proyecto.Values.Get(3)
            Me.txtPlanActualizada.Text = coger_MC_Proyecto.Values.Get(4)
            Me.txtFecha_inicio.Text = coger_MC_Proyecto.Values.Get(5)
            Me.txtFecha_final.Text = coger_MC_Proyecto.Values.Get(6)
            Me.txtResponsable.Text = coger_MC_Proyecto.Values.Get(8)
            Me.txtCoordinador.Text = coger_MC_Proyecto.Values.Get(10)
            Me.txtCliente.Text = coger_MC_Proyecto.Values.Get(12)

        Else
            ' Si no está el nombre definido es que se está creando el proyecto
            'Crear código para el proyecto
            codProy = Consultas_PorCodigo.crearCodProyecto(Session("tipo_proyecto"), Session("año"))
            Session("crearProyecto") = False

            If Not codProy.Equals("") Then
                Consultas_PorCodigo.meterProyEnCookie(codProy)
            End If

            ' Redirigimos a esta misma página para que entre cargando el proyectio
            Response.Redirect("DetallesProyecto.aspx")
        End If
    End Sub
La primera vez que cargo la página entra por el ELSE para crear un nuevo proyecto y lo guarda en la Cookie. Despues redirijo la misma página. Ahora entra por el IF y lee correctamente de la cookie los valores que habia inicializado la primera vez y los muestra en el formulario.


Una vez mostrados los valores, el usuario puede cambiar algunas cosas y pulsar el botón guardar, que tiene el siguiente código (hasta aquí todo habia ido correctamente)

Código:
Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        Dim coger_MC_Proyecto As HttpCookie = Request.Cookies.Get("GestProy_Proyecto")

        Dim proyecto As New Proyecto()

        proyecto.codigo = coger_MC_Proyecto.Values.Get(0)
        proyecto.nombre = Me.txtNombre.Text
        proyecto.descripcion = Me.txtDescripcion.Text
        proyecto.plan_inicial = Me.txtPlanInicial.Text
        proyecto.plan_actual = Me.txtPlanActualizada.Text
        proyecto.fecha_inicio = Me.txtFecha_inicio.Text
        proyecto.fecha_final = Me.txtFecha_final.Text
        proyecto.responsable = coger_MC_Proyecto.Values.Get(7)
        proyecto.coordinador = coger_MC_Proyecto.Values.Get(9)
        proyecto.cliente = coger_MC_Proyecto.Values.Get(11)

       ' Cambio en la BD 
       Control_Detalles.guardarCambiosDetProy(proyecto)
     
    End Sub
Tras ejecutar debugueando: Dim coger_MC_Proyecto As HttpCookie = Request.Cookies.Get("GestProy_Proyecto") compruebo el valor de la cookie y está vaciía, por lo que el objeto "proyecto" se me inicializa incorrectamente.

Desde el principio traté de reducir un poco los post para hacerlo más legible. Esto es todo el código.

Muchas gracias por tu tiempo.
  #6 (permalink)  
Antiguo 14/10/2008, 10:07
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Problema con las Cookies

ok lo que me intriga 1 es o q en algun lado ocurra un response.end() o algo asi o que tu cookie este expirando. prueba darle una vigencia mas larga a tu cookie y nos dices como te fue.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #7 (permalink)  
Antiguo 15/10/2008, 01:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema con las Cookies

Hola,

Tras hacer varias pruebas he comprobado que si quito la siguiente línea funciona correctametne.
Código:
' Redirigimos a esta misma página para que entre cargando el proyectio
  Response.Redirect("DetallesProyecto.aspx")
El objetivo de esto es poder usar el mismo formulario para consultar y crear proyectos, de manera que si se acaba de crear el proyecto se rediriga a sí misma pero cargando los valores que se acaban de crear. Quizá no es la mejor manera de hacerlo pero.. no entiendo porqué al redirigirse a sí misma los valores de la cookie se pierden. ¿Esto puede evitarse de alguna manera?

Muchas gracias una vez más
  #8 (permalink)  
Antiguo 15/10/2008, 06:40
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Problema con las Cookies

Response.Redirect(ruta,true)

el 2do parametro le dice a tu server que continue con la ejecucion de la pagina actual.

pruebalo y nos dices como te va.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #9 (permalink)  
Antiguo 15/10/2008, 07:02
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema con las Cookies

He provado con poniendo True y poniendo False. Y el problema sigue igual.

También he probado a hacer Server.Transfer con True y con False. Todo igual.

Supongo que mi web.config está bien configurado
Código:
 <sessionState cookieless="true" timeout="20" />
Pienso que el problema esta al Redirigir a la misma página sin haber mostrado antes el formulario.... pero ya no se me ocurren más soluciones.
  #10 (permalink)  
Antiguo 16/10/2008, 16:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema con las Cookies

Hola una vez más,

He decidido rendirme con este tema. Finalmente he optado por modificar este código para que en vez de trabajar con Cookies trabaje con Variables de Sesión y así poder continuar con el trabajo. Quizá en algún momento decida volver a tratar de solucionar el problema. Si lo consigo dejaré aquí la solución.

De todos modos quiero agradecer la ayuda recibida igualmente. Muchas gracias y un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:16.