Avatar billede nielslbeck Nybegynder
29. september 2004 - 09:21 Der er 3 kommentarer og
2 løsninger

Cookien vil ikke gemmes

Simpelt problem: Hvordan sætter jeg en cookie, og får den til at blive på klienten?

Jeg har lavet nedenstående kode, som jeg vil mene burde løse problemet:


<html>
<head>
<script language="C#" runat="server">

private void click(object sender, EventArgs e) {
    HttpCookie cookie = new HttpCookie("minCookie", "Hello World");
    cookie.Expires = DateTime.MaxValue;
    Response.Cookies.Set(cookie);
}

</script>
</head>
<body>

<a href="test.aspx">Genindlæs siden</a>

<form runat="server">
<asp:button runat="server" text="Sæt cookie" onclick="click" /><br>
Response.Cookies["minCookie"].Value: <%= Response.Cookies["minCookie"].Value %><br>
Request.Cookies["minCookie"].Value: <%= Request.Cookies["minCookie"].Value %>
</form>

</body>
</html>


Når man trykker på knappen, sættes en cookie, og siden Response.Cookies["minCookie"].Value udskriver "Hello World". Når man genindlæser siden, udskriver Request.Cookies["minCookie"].Value "Hello World" - som planlagt. Men hvis man genindlæser siden igen, udskriver Request.Cookies["minCookie"].Value ingenting - ikke helt som planlagt... hvad gør jeg forkert?

Har forsøgt med både Response.Cookies.Set og Response.Cookies.Add, men de giver begge samme resultat.
Avatar billede snepnet Nybegynder
29. september 2004 - 18:45 #1
Hvad sker der hvis du prøver denne her :

HttpCookie cookie= Request.Cookies("TestCookie");
if (cookie == null)
{
  cookie = new HttpCookie("TestCookie");
}
cookie.Value = "Hello World";
cookie.Expires = DateTime.Now.AddYears(5);

Response.AppendCookie(cookie);

mvh
Avatar billede nielslbeck Nybegynder
29. september 2004 - 20:29 #2
Nøjagtig det samme, både i IE, Opera og Firefox...

Helt ærligt, hvordan plejer folk at sætte cookies? Der må da være nogen, der har gjort det før... hvor svært kan det være??? :-)
Avatar billede snepnet Nybegynder
29. september 2004 - 21:13 #3
virker det her hos dig ?

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EXP2
{
    public class SomeCookies : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button Button1;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            HttpCookie cookie= Request.Cookies["TestCookie"];
            if (cookie == null)
            {
                cookie = new HttpCookie("TestCookie");
            }
           
            if(!IsPostBack)
            {
                cookie.Value = "Hello World";
                cookie.Expires = DateTime.Now.AddYears(5);
                Response.AppendCookie(cookie);
            }
            else
            {
                Response.Write(cookie.Value);
            }           
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
    }
}
Avatar billede nielslbeck Nybegynder
30. september 2004 - 12:05 #4
Hmm... har fundet ud af hvad problemet er, men forstår ikke hvorfor det er der... Hvis man i mit eksempel fra før fjerner linien:

Response.Cookies["minCookie"].Value: <%= Response.Cookies["minCookie"].Value %>

så virker det hele som det skal. Så når man udlæser Response.Cookies[...].Value, bliver cookien slettet!

Smid et svar snepnet, så får du et par points :-)
Avatar billede snepnet Nybegynder
30. september 2004 - 12:28 #5
ok :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester