Bonjour,
je voudrais stocker en mémoire la liste des visiteurs qui visitent certaine de mes pages, pour cela j'ai crée une procédure qui me stock la liste des connectés en cache mais les informations n'y restent pas longtemps et je voudrais les stocker au moins 24h, voici mon code :
ma classe connection :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public List<Connection> AfficherConnecte(Page page) { bool creer = false; List<Connection> connections = page.Cache["connecte"] as List<Connection>; if (connections == null) { // première création du cache creer = true; connections = new List<Connection>(); } string ip = page.Request.UserHostAddress; string pseudo = (page.User.Identity == null || !page.User.Identity.IsAuthenticated) ? "Non connecté" : page.User.Identity.Name; DateTime date = DateTime.Now; Connection findCon = new Connection(); if (pseudo == "Non connecté") { findCon = connections.Where(c => c.Ip == ip && c.Page == page.Title).SingleOrDefault(); } else { findCon = connections.Where(c => c.Pseudo == pseudo && c.Page == page.Title).SingleOrDefault(); } if (findCon == null) { Connection connection = new Connection() { Ip = ip, Heure = date, Pseudo = pseudo, Page = page.Title }; connections.Add(connection); } else { findCon.Heure = date; findCon.Ip = ip; } if (creer) { page.Cache.Insert("connecte", connections, null, date.AddDays(1), Cache.NoSlidingExpiration); } else { page.Cache["connecte"] = connections; } return connections; }
Est-ce que le cache n'est pas la bonne solution ou ai-je fais une erreur ? (J'avais pas envie de stocker ces informations en BDD)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 [Serializable()] public class Connection { public string Ip { get; set; } public DateTime Heure { get; set; } public string Pseudo { get; set; } public string Page { get; set; } public override string ToString() { return "IP: " + Ip + " Heure: " + Heure.ToLongTimeString() + " Pseudo: " + Pseudo + " Page: " + Page; } }
Partager