2010-12-29 5 views
3

Comment puis-je obtenir l'adresse IP de la machine cliente en C#? Je veux tenir un registre de journal pour ma demande en ligne et de garder l'adresse IP du système d'exploitation forestière je veux obtenir l'adresse IP du client ....IP du client utilisant C#

Merci d'avance ...

+1

Comment se connecte le client? Qu'est-ce que l'hébergement du serveur? ASP.NET? WCF? Un autre jour? – blowdart

+0

@blowdart: ASP.NET – Nithesh

+1

duplication possible http://stackoverflow.com/questions/735350/how-to-get-users-client-ip-address-in-asp-net –

Répondre

6
HttpContext.Current.Request.UserHostAddress 

Cette ne tente pas de prendre en compte les procurations. Pour cela, vous pouvez utiliser Request.ServerVariables["HTTP_X_FORWARDED_FOR"]. Cependant, assurez-vous que vous ne faites pas confiance aveuglément, car il pourrait être falsifié. Il est préférable de conserver une liste blanche des adresses IP pour lesquelles vous avez confiance.

+0

Cela ne fonctionnera pas. Il renvoie 127.0.0.1 .Mon système est dans un réseau. Je veux l'adresse IP réelle du système client – Nithesh

+2

@Nithesh, ça fonctionne. C'est * l'adresse IP qui est réellement connectée au serveur. Cela signifie que votre serveur est sur 'localhost' –

+0

Ok. Merci .. – Nithesh

8
String clientIP = 
(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]==null)? 
HttpContext.Current.Request.UserHostAddress: 
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
+1

Comme Wikipedia [notes] (http://en.wikipedia.org/wiki/X-Forwarded-For), la valeur de cet en-tête peut être faux. Ainsi, il est plus sûr de conserver une liste blanche des adresses IP pour lesquelles vous lui faites confiance. –

+3

Chaîne clientIP = HttpContext.Current.Request.ServerVariables ["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.UserHostAddress n'est-il pas plus lisible? +1 pour la vérification par proxy – naveen

+0

En effet, il est plus lisible, mais je n'étais pas sûr de la version .Net OP utilise. – Chandu