Question

Je veux ajouter 3 clé de série du système client à l'aide HttpCookie quand il a visité mon site mon site hors cours dans asp.net MVC

clé de série est différent différent pas la même.

quand j'ajouter un 4ème biscuit puis touche 1 est automatiquement supprimé.

comment je peux le faire.

lorsque l'utilisateur veut voir alors il peut voir la clé récente 3.

Êtes-vous savez comment ajouter ce cookie au système client par asp.net mvc site.

comment je peux ajouter key1, touche 2, key3 au système client.

Était-ce utile?

La solution

Voici comment vous pouvez le faire.

L'écriture des touches série.

//create a cookie
HttpCookie SerialKeys = new HttpCookie("SerialKeys");

//Add serial-key-values in the cookie
SerialKeys.Values.Add("key1", "your-first-serialkey");
SerialKeys.Values.Add("key2", "your-second-serialkey");
SerialKeys.Values.Add("key3", "your-third-serialkey");
SerialKeys.Values.Add("key4", "your-fourth-serialkey");

//set cookie expiry date-time. Made it to last for next 12 hours.
SerialKeys.Expires = DateTime.Now.AddHours(12);

//Most important, write the cookie to client.
Response.Cookies.Add(SerialKeys);

La lecture du cookie clé de série.

//Assuming user comes back after several hours. several < 12.
//Read the cookie from Request.
HttpCookie SerialKeys = Request.Cookies["SerialKeys"];
if (SerialKeys == null)
{
    //No cookie found or cookie expired.
    //Handle the situation here, Redirect the user or simply return;
}

//ok - cookie is found.
//Gracefully check if the cookie has the key-value as expected.
if (!string.IsNullOrEmpty(SerialKeys.Values["key1"]))
{
    string serialKey = SerialKeys.Values["key1"].ToString();
    //Yes key1 is found. Mission accomplished.
}

if (!string.IsNullOrEmpty(SerialKeys.Values["key2"]))
{
    string serialKey = SerialKeys.Values["key2"].ToString();
    //Yes key2 is found. Mission accomplished.
}

Autres conseils

Vous pouvez ajouter des cookies à l'utilisateur lorsqu'un utilisateur démarre une session. Cela peut être fait par la manipulation de la session, même dans le fichier Global.asax de votre demande l'ajout de dans le code logique pour la création de ces clés.

void Session_OnStart() {
    HttpCookie key1 = new HttpCookie("key1","123");   
    Request.Cookies.Add(key1);
}

Alors, pour la 4ème chose cookie votre parlaient, vous pouvez créer votre logique de code en faisant référence aux cookies utilisateurs en utilisant Response.Cookies["cookie"] ou supprimer un à l'aide Request.Cookies.Remove("cookie");

Toutes les limites du navigateur d'une manière ou d'une autre la quantité de cookies un certain site Web peut stocker. Si par exemple votre navigateur accepte les cookies n, le lorsque vous envoyez le n + 1, le navigateur supprimera votre plus ancien. Il me semble que ce soit ce qui se passe.

Une solution possible est d'utiliser un cookie avec différents subvalues ??au lieu d'un seul. De cette façon, vous pouvez avoir dans un biscuit autant de valeurs que vous voulez (Soumise toujours à la limite de taille maximale des cookies qui est 4086 octets).

Le code pour le faire serait quelque chose comme:

//This code creates the cookie, ads some subvalues to it and then adds it to the request so its sent to the browser
HttpCookie cookie = new HttpCookie();
cookie.Name = "MyKeys";            
cookie.Values.Add("Key1", "ValueKey1");
cookie.Values.Add("Key2", "ValueKey2");
cookie.Values.Add("Key3", "ValueKey3");
//etc...

Request.Cookies.Add(cookie);

//This code reads the data from the cookie.
HttpCookie rcookie = Response.Cookies.Get("MyKeys");
string value1, value2, value3;
//We verify it the variable is null because the cookie might not exist in the users browser. If so, this variable would be null
if (rcookie != null) 
{
    value1 = rcookie.Values.Get("Key1");
    value2 = rcookie.Values.Get("Key2");
    value3 = rcookie.Values.Get("Key3");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top