webForumDet fria alternativet

Problem med cookies

.NET

2 svar · 448 visningar · startad av janfang

Medlem sedan okt. 200058 inlägg
Frågan#1

Jag har problem med cookies i mina asp.net-sidor. Jag vill kunna skriva ut en text som enbart ska synas en gång per besökare. Det är dock en del användare som ser texten flera gånger när de går in på sidan några minuter senare. vad kan det vara för fel?

Jag använder nedanstående kod

// Skapa testcookie för att se om jag kan sätta cookies.
HttpCookie Cookie1 = new HttpCookie("cookieCheck");
Cookie1.Value = "yes";
Cookie1.Expires = DateTime.Now.AddMonths(1);
Response.Cookies.Add(Cookie1);

if (Request.Cookies["cookieCheck"] != null)
{
    // kontroll om jag ska visa text.
    if (Request.Cookies["cookieShowText"] == null)
    {
        // Visa text och sätt cookie
        HttpCookie newCookie = new HttpCookie("cookieShowText");
        newCookie.Value = "yes";
        newCookie.Expires = DateTime.Now.AddMonths(2);
        Response.Cookies.Add(newCookie);
    }

}
Medlem sedan maj 20012 812 inlägg
#2

Det är en liten klocka i bakhuvudet som ringer och om jag inte har helt fel så kan du inte kontroller att du kan skriva en cookie samtidigt som du skrivit den. Alltsä så kommer du alltid få okej att du har skrivit cookisen även om den egentligen aldrig har blivit skriven, det skall så fall beror på att du faktiskt lägger till den till ditt request objekt, och sedan kontrollerar du om den finns där, och det borde den ju göra. Det betyder dock inte att den har blivit nerskriven till besökaren, bara att den finns i ditt request objekt.

- M

Medlem sedan dec. 19996 721 inlägg
#3

Det är inget konstigt alls. Man kan inte testa om cookies kan sättas inom rymden för en sidrequest. När en cookie läggs till i Response betyder det inte att den dyker upp i Request. Om man vill testa tilldelningen av en cookie måste det göras i två steg. Se det så här:

Response.Cookies.Add(Cookie1) = Hej Response-objektet! Vill du vara vänlig att skicka med cookien Cookie1 i samband med att du skriver ut HTML och annat på sidan? Vi kan ju inte vara säkra på att webbläsaren vill ta emot cookien, men du kan ju försöka i alla fall. När nästa request kommer tillbaka så får vi se om vi också får tillbaka Cookie1. Om den gör det så vet vi att cookies kan användas.

265 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)