2013-09-25 3 views
0

MVC 앱에서 요청에 대한 IP를 가져 오려고합니다.ASP.NET MVC에서 사용자 IP 가져 오기

는 여기에 내가

string srUserIp = ""; 

srUserIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); 

if (string.IsNullOrEmpty(srUserIp)) 
{ 
    srUserIp = Request.ServerVariables["REMOTE_ADDR"].ToString(); 
} 

이 컨트롤러의 메서드에있는 코드입니다. Request.ServerVariables의 첫 번째 줄이 적중 될 때 'Object reference not set to instance'오류가 발생합니다.

컨트롤러 메서드에서 HttpContext 개체를 가져 와서 요청 된 사용자의 IP를 얻을 수 있고 응용 프로그램이 호스팅되는 서버의 IP를 가져올 수 없게하려면 어떻게해야합니까?

감사합니다.

+3

에서 .ToString()을하지 않는다하는 의견 역시 ServerVariables 반환 한 문자열 지적 ', 당신은 ToString()을 호출하고 있습니다. 어쨌든'문자열'을 반환합니다. –

+0

은 이러한 변수에 의존하지 않습니다. 클라이언트가 악의적으로 보낼 수 있으므로 쉽게 속일 수 있습니다. – Softlion

답변

2

HTTP_X_FORWARDED_FOR 서버 변수가 null 인 경우 .ToString()을 수행하면 개체 참조가 설정되지 않습니다.

srUserIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

if (string.IsNullOrEmpty(srUserIp)) 
{ 
    srUserIp = Request.ServerVariables["REMOTE_ADDR"]; 
} 

으로는 역시 ServerVariables은 [ "HTTP_X_FORWARDED_FOR"]는`유용하거나`널 뭔가를 반환했습니다`여부를 확인하기 전에 너무 필요가 모든

관련 문제