2010-12-29 3 views
3

클라이언트 컴퓨터의 IP 주소를 C#으로 얻으려면 어떻게해야합니까? 나는C#을 사용하는 클라이언트 IP

사전 감사합니다 ...

+1

클라이언트 연결 방법은 무엇입니까? 서버 호스팅은 무엇입니까? ASP.NET? WCF? 언젠가? – blowdart

+0

@blowdart : ASP.NET – Nithesh

+1

가능한 복제 http://stackoverflow.com/questions/735350/how-to-get-users-client-ip-address-in-asp-net –

답변

6
HttpContext.Current.Request.UserHostAddress 

이를 .... 내가 클라이언트의 IP 주소를 얻으려면 내 온라인 응용 프로그램에 대한 로그 레지스터를 유지하고 로깅 시스템의 IP 주소를 유지하려면 프록시를 고려하지 않습니다. 이를 위해서는 Request.ServerVariables["HTTP_X_FORWARDED_FOR"]을 사용할 수 있습니다. 그러나 위조 될 수 있기 때문에 당신이 맹목적으로 그것을 신뢰하지 않는지 확인하십시오. 신뢰하는 IP의 화이트리스트를 유지하는 것이 좋습니다.

+0

작동하지 않습니다. 127.0.0.1을 반환합니다. 내 시스템이 네트워크에 있습니다. 클라이언트 시스템의 실제 IP 주소를 원합니다. – Nithesh

+2

@Nithesh, 작동 중입니다. 그것은 실제로 서버에 연결된 IP입니다. 이것은 서버가'localhost'에 있음을 의미합니다. –

+0

Ok. 감사합니다 .. – 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

위키 피 디아 [메모] (http://en.wikipedia.org/wiki/X-Forwarded-For)에서이 헤더의 값은 가짜 일 수 있습니다. 그러므로 IP를 허용하는 화이트리스트를 유지하는 것이 더 안전합니다. –

+3

String clientIP = HttpContext.Current.Request.ServerVariables [ "HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.UserHostAddress가 더 읽기 쉽지 않습니까? +1 체크 프록시에 대한 – naveen

+0

실제로 더 읽기 쉽지만, .Net 버전 OP가 사용하고 있는지 잘 모르겠습니다. – Chandu

관련 문제