2009-08-17 27 views
13

tôi đang tìm kiếm những cách thức để phát hiện/ước tính nước từ đó một http-request đang đến trong ASP.NET.
Tôi biết có một số giải pháp với dịch vụ/tra cứu quốc gia nhưng tôi chưa bao giờ sử dụng.

Tôi đang tìm kiếm các giải pháp nhỏ/sạch.
Đó là để giúp ai đó điền vào một biểu mẫu để nó không phải chính xác 100%.
Detect/ước tính nước của một http-request trong ASP.NET

Thanks in advance ..

Trả lời

6

Bạn có thể sử dụng một trong các dịch vụ web có sẵn để phù hợp với một yêu cầu gửi đến một quốc gia.

Nếu không, bạn có thể quyết định lấy tệp cơ sở dữ liệu MaxMind (GeoLite Country), đọc từ tệp này trong ứng dụng của bạn và thực hiện khớp. Vì vậy, bạn sẽ độc lập với dịch vụ của bên thứ ba, chỉ kéo các bản cập nhật thường xuyên cho tệp cơ sở dữ liệu.

Ngoài ra kiểm tra câu hỏi tương tự:

Geolocation web service recommendations

Know a good IP address Geolocation Service?

+1

Tôi chọn bảng Quốc gia GeoLite. Cảm ơn –

3

Nếu bạn chọn sử dụng các biến server REMOTE_ADDR, bạn có thể khá chắc chắn rằng địa chỉ IP mà bạn phục hồi một cách chính xác đại diện cho quốc gia xuất xứ của người dùng đó. Việc người dùng truy cập Internet từ bên ngoài quốc gia là điều không phổ biến, với một vài ngoại lệ đáng chú ý, chẳng hạn như những người chọn lướt qua máy chủ proxy ẩn danh, chẳng hạn như được thảo luận bên dưới. Tuy nhiên, nếu bạn muốn nhận được trạng thái mà người dùng đến từ hoặc xác thực danh tính của người dùng, bạn sẽ không may mắn như bất kỳ phương pháp đáng tin cậy nào từ xa.

Thông tin thêm here.

11

Bạn có thể tạo một yêu cầu HTTP đơn giản để URL này:

http://api.hostip.info/get_html.php?ip=207.46.197.32 

sử dụng giá trị của biến REMOTE_ADDR máy chủ . Điều đó sẽ trả về quốc gia và thành phố như sau:

Country: UNITED STATES (US) 
City: New York, NY 

Tôi sử dụng dịch vụ đó cho biểu mẫu web giống như bạn mô tả. Thỉnh thoảng nó không biết câu trả lời, nhưng thường rất tốt (và miễn phí và đơn giản 8-)

Trong C#, bạn có thể sử dụng System.Net.WebRequest.Create để đọc từ URL.

0

tôi chỉ phải làm điều này vì vậy đây là một ví dụ làm việc (cụ thể sang Pháp) có thể được sử dụng với một ai đó:

 string userIP = Request.ServerVariables["REMOTE_ADDR"]; 
     string localeAPIURL = "http://api.hostip.info/get_html.php?ip=" + userIP; 

     HttpWebRequest r = (HttpWebRequest)WebRequest.Create(localeAPIURL); 
     r.Method = "Get"; 
     HttpWebResponse res = (HttpWebResponse)r.GetResponse(); 
     Stream sr = res.GetResponseStream(); 
     StreamReader sre = new StreamReader(sr); 

     // check response for FRANCE 
     string s = sre.ReadToEnd(); 
     string sub = s.Substring(9, 6); 
     if (sub == "FRANCE") 
     { 
      Response.Redirect("http://fr.mysite.com"); 
     } 
+0

hi bạn đã đặt mã này ở đâu?và làm cách nào tôi có thể kiểm tra khi đăng nhập/đăng ký – transformer

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> 

Đơn giản, và nó hoạt động.

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