2009-09-11 9 views

Odpowiedz

0

Uzyskaj adres IP klienta i znajdź lokalizację adresu IP za pomocą dowolnego adresu IP, aby skorzystać z usługi mapowania lokalizacji.

11

Oto jak to się robi w ASP.NET

Request.ServerVariables("REMOTE_ADDR") 

Pobierz kopię IP adress danych według lokalizacji tutaj

http://www.maxmind.com/

+0

+1 dla Maxmind. Używał go z wielkim sukcesem. –

+4

Powinien być Request.ServerVariables ["REMOTE_ADDR"] w C# – Dean

4

za pomocą

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

ty dostanie adres IP użytkowników. Na podstawie tego adresu IP możesz dowiedzieć się szczegółów lokalizacji odwiedzającego, dzwoniąc pod numer webservice.

+0

Ta zmienna serwerowa jest dostępna tylko wtedy, gdy twój serwer sieciowy znajduje się za serwerem proxy lub urządzeniem sieciowym. – David

+1

Sądzę, że to był cały sens jego logiki, aby to sprawdzić, a następnie wrócić do adresu hosta użytkownika, jeśli nie istnieje. – Justin

2

IPAddressExtensions to bezpłatna biblioteka klas kodeków, jeśli wszystko czego potrzebujesz to kraj, z którego pochodzi IP.

2

Najpierw uzyskaj adres IP odwiedzającego za pomocą Request.ServerVariables ("REMOTE_ADDR"). Należy pamiętać, że odwiedzający może używać serwera proxy, w którym to przypadku adres IP może nie być faktycznym adresem IP. W przypadku proxy można sprawdzić, czy Request.ServerVariables ("HTTP_X_FORWARDED_FOR") zawiera wartość. Będzie to rzeczywisty adres IP, jeśli serwer proxy nie jest anonimowym serwerem proxy.

Następnie masz 2 opcje, korzystając z usługi internetowej lub wysyłając zapytanie do danych z własnej bazy danych. Tak czy inaczej, będziesz potrzebować danych, które będą pasować do adresu IP odwiedzającego do ich kraju, stanu i miasta.

0

To właśnie użyłem:

<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> 
Powiązane problemy