Bonjour,
Je suis confronter à un problème : compter le nombre de client connecté à mon web service.
J'ai pensé à comptabilisé le nombre de connexion en différenciant le nombre d'ip différente connecté à mon web service.
J'ai essayé de récupéré en vain l'adresse IP du client à sa connexion avec toutes les différentes méthodes que j'ai pu trouver sur internet :
Seulement toutes ces fonctions me retourne l'erreur suivante :
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
56
57
58
59
60 private string GetCustomerIP() { string CustomerIP = ""; try { if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); } else { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); } } catch { } try { CustomerIP = System.Web.HttpContext.Current.Request.UserHostAddress; } catch { } try { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } catch { } try { string clientIP; string ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (!string.IsNullOrEmpty(ip)) { string[] ipRange = ip.Trim().Split(','); int le = ipRange.Length - 1; clientIP = ipRange[le]; } else clientIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } catch { } // Get message properties from current OperationContext System.ServiceModel.Channels.MessageProperties props = System.ServiceModel.OperationContext.Current.IncomingMessageProperties; // Find the RemoteEndpointMessageProperty System.ServiceModel.Channels.RemoteEndpointMessageProperty prop = (System.ServiceModel.Channels.RemoteEndpointMessageProperty)props[System.ServiceModel.Channels.RemoteEndpointMessageProperty.Name]; // Retrieve the IP address string addr = prop.Address; int iPort = prop.Port; return addr; }
Et l'utilisation du OperationContext me retourne une chaine d'adresse vide ("") !La valeur n'est pas comprise dans la plage attendue.
J'utilise un web service avec une liaison WSDualHttpBinding et les caractéristique suivante :
Avez vous une idée d'où le problème peut venir ? et/ou Avez vous d'autres propositions pour connaitre le nombre de client actuellement connecté ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Partager