Auteur de questions
Récupérer IP client dans wcf

Discussion générale
-
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 :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; }
Seulement toutes ces fonctions me retourne l'erreur suivante :
La valeur n'est pas comprise dans la plage attendue.
Et l'utilisation du OperationContext me retourne une chaine d'adresse vide ("") !
J'utilise un web service avec une liaison WSDualHttpBinding et les caractéristique suivante :
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
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é ?
- Type modifié Aurel Bera vendredi 21 juin 2013 09:10 Discussion
Toutes les réponses
-
Bonjour
L'erreur est élevée dans le service WCF ou bien dans l'application?
Cordialement
-
-
Re Bonjour
RemoteEndpointMessageProperty.Name retourne
"System.ServiceModel.Channels.RemoteEndpointMessageProperty".
A priori dans « props » n'existe une telle propriété.
Cordialement,