2011-09-07 12 views
5

thể trùng lặp:
Client IP using C#Làm thế nào để có được địa chỉ IP từ một người truy cập (còn nếu đằng sau một Proxy)

tôi sử dụng ASP.net và C# và tôi muốn biết cách lấy địa chỉ IP từ khách truy cập trên trang.

Tôi muốn xem ví dụ về mã truy xuất địa chỉ IP và cũng có thể hiển thị nếu IP nằm sau proxy.

Cảm ơn thời gian của bạn.

+0

tại sao chàng trai một cuộc bỏ phiếu xuống cho câu hỏi này? Câu hỏi được chỉ ra bởi Mat không đối phó với Proxy. Một bình luận sẽ được đánh giá cao. – GibboK

+0

đọc câu trả lời cho câu hỏi đó. Một số người đối phó với proxy. (Đối với các downvote, tôi không biết.Có lẽ là "không đủ nghiên cứu".) – Mat

+0

Cảm ơn mat cho bình luận của bạn. – GibboK

Trả lời

9

Bạn có thể sử dụng UserHostName tài sản trên các đối tượng Request:

string ip = Request.UserHostName; 

Theo như câu hỏi thứ hai của bạn về proxy là có liên quan, không có cách nào đáng tin cậy để đạt được điều này. Bạn có thể sử dụng chẩn đoán để tìm kiếm một số tiêu đề yêu cầu HTTP có thể được gửi bởi máy chủ proxy chẳng hạn như Via hoặc X-Forwarded-For.

string header = Request.Headers["Via"] ?? Request.Headers["X-Forwarded-For"]; 
if (!string.IsNullOrEmpty(header)) 
{ 
    // probably the request was forwarded from a proxy server 
    // but you cannot be 100% sure as HTTP request headers can be faked 
} 
+0

Cảm ơn Darin vì sự thấu hiểu của bạn. – GibboK

+0

để thực hiện công việc 'request' bạn cần thêm tham chiếu' System.Web.dll', hãy kiểm tra cách thực hiện [tại đây] (http://www.codeproject.com/Questions/422895/The-name-HttpContext-does -không tồn tại trong hiện tại), hy vọng sẽ giúp một số. – stom

+0

"Via" có thể chứa tên proxy nhưng "X-Forwarded-For" ip thực tế. Chỉ cần chắc chắn rằng bạn đã chọn đúng. – SeriousM

-1

đơn giản như vậy dude,

string IP = Request.ServerVariables["REMOTE_HOST"].ToString(); 
+0

Câu hỏi của ông là làm điều đó đằng sau một proxy. Giải pháp của bạn sẽ luôn cung cấp cho ip của máy chủ proxy chính nó. –