2011-10-06 39 views
9
  1. Trong Máy Dev của tôi HttpContext.Current.Request.UserHostAddress không có giá trị. Tại sao? làm thế nào tôi có thể bật nó?
  2. Làm cách nào để có danh sách Ips trong trường hợp máy khách proxy?

WCF Service with ASP.net 4 window7.HttpContext.Current.Request.UserHostAddress is null

Cảm ơn

+0

Tôi chưa bao giờ nhận được một trống/null, nhưng Cassini trả về một ":: 1" bây giờ vì lý do gì. –

+0

@DoozerBlake the :: 1 là phiên bản 127.0.0.1 của IPv6. Nguồn: http://stackoverflow.com/a/4611421/84395 –

Trả lời

6

để tránh vấn đề này, bạn có thể phân tích các HTTP_X_FORWARDED_FOR cho IP entery ngoái.

ip=Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ; 
if (!string.IsNullOrEmpty(ip)) 
{ 
    string[] ipRange = ip.Split(','); 
    int le = ipRange.Length - 1; 
    string trueIP = ipRange[le]; 
} 
else 
{ 
    ip=Request.ServerVariables["REMOTE_ADDR"]; 
} 

Hope điều này sẽ giúp bạn

+3

Chỉ cần lưu ý về câu trả lời của 'Viral Sarvaiya'. Theo [Wikipedia] (http://en.wikipedia.org/wiki/X-Forwarded-For) và [Amazon] (http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html) tiêu đề X-Forwarded-For có định dạng sau:> X-Forwarded-For: client, proxy1, proxy2 Điều này có nghĩa là bạn nên sử dụng chuỗi đầu tiên trong 'ipRange', không phải là chuỗi cuối cùng. – dubrowgn

Các vấn đề liên quan