2009-09-11 47 views
15

Tôi muốn thực hiện điều này trong ASP.NET. Tôi không có bất kỳ ý tưởng về làm thế nào để làm như vậy, không may.Cách nhận vị trí của khách truy cập (quốc gia, tiểu bang và thành phố) bằng cách sử dụng ASP.NET

+1

Bạn chỉ có thể có được một vị trí gần đúng, và nó có thể không đúng. –

+0

Tôi đã xóa liên kết spam. –

+0

Tương tự. Xin lỗi vì đã chỉnh sửa đồng thời! Hãy quay lưng lại với tôi. – JoshJordan

Trả lời

0

Nhận IP của khách hàng và tìm vị trí của IP bằng cách sử dụng bất kỳ IP nào tới dịch vụ Bản đồ vị trí địa lý.

11

đây như thế nào nó được thực hiện trong asp.net

Request.ServerVariables("REMOTE_ADDR") 

Nhận một bản sao của cơ sở dữ liệu địa chỉ IP theo địa điểm ở đây

http://www.maxmind.com/

+0

+1 cho Maxmind. Sử dụng nó với thành công lớn. –

+4

Nên là Request.ServerVariables ["REMOTE_ADDR"] trong C# – Dean

4

bằng cách sử dụng

string userHost = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
if (String.IsNullOrEmpty(userHost) || 
    String.Compare(userHost, "unknown", true) == 0) 
{ 
    userHost = Request.UserHostAddress; 
} 

bạn sẽ nhận địa chỉ IP của người dùng. Dựa trên địa chỉ IP này, bạn có thể tìm hiểu chi tiết về vị trí của khách truy cập bằng cách gọi số webservice.

+0

Biến máy chủ đó chỉ khả dụng nếu máy chủ web của bạn đứng sau proxy hoặc một số loại thiết bị mạng. – David

+1

Tôi tin rằng đó là toàn bộ vấn đề logic của anh ta, để kiểm tra điều đó, và sau đó quay trở lại địa chỉ host của người dùng nếu nó không tồn tại. – Justin

2

IPAddressExtensions là thư viện lớp codeplex miễn phí nếu tất cả những gì bạn muốn chỉ là Quốc gia IP được đặt.

2

Trước tiên, hãy lấy địa chỉ IP của khách truy cập bằng cách sử dụng Request.ServerVariables ("REMOTE_ADDR"). Hãy nhớ rằng khách truy cập có thể đang sử dụng máy chủ proxy trong trường hợp đó địa chỉ IP có thể không phải là địa chỉ IP thực của họ. Đối với trường hợp proxy, bạn có thể kiểm tra xem Request.ServerVariables ("HTTP_X_FORWARDED_FOR") có chứa một giá trị không. Đây sẽ là địa chỉ IP thực nếu máy chủ proxy không phải là máy chủ proxy ẩn danh.

Sau đó, bạn có 2 tùy chọn, sử dụng dịch vụ web hoặc truy vấn dữ liệu từ cơ sở dữ liệu của riêng bạn. Dù bằng cách nào, bạn sẽ cần dữ liệu có thể khớp với địa chỉ IP của khách truy cập đến quốc gia, tiểu bang và thành phố của họ.

0

Đây là những gì tôi đã sử dụng:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      'url': 'http://www.freegeoip.net/json/@(HttpContext.Current.Request.UserHostAddress)', 
      'type': 'GET', 
      'success': function(data) { 
       // for example 
       if (data.country_code === "GB") { 
        ... further logic here 
       } 
      } 
     }); 
    }); 
</script> 
Các vấn đề liên quan