2009-09-11 17 views
15

erhalten möchte Ich möchte dies in ASP.NET implementieren. Ich habe leider keine Ahnung, wie das geht.Wie man Besucherstandort (Land, Staat und Stadt) mit ASP.NET

+1

Sie können nur eine ungefähre Position bekommen, und es ist möglicherweise falsch. –

+0

Ich habe den Spam-Link los. –

+0

Gleiches. Entschuldigung für die gleichzeitige Bearbeitung! Fühlen Sie sich frei, über mich zurückzurollen. – JoshJordan

Antwort

0

Holen Sie sich die IP-Adresse des Clients und suchen Sie den IP-Standort mit einem beliebigen IP-Standortzuordnungsdienst.

11

Hier ist, wie es in asp.net getan wird

Request.ServerVariables("REMOTE_ADDR") 

eine Kopie der IP-Adresse Datenbank nach Standort Erhalten Sie hier

http://www.maxmind.com/

+0

+1 für Maxmind. Benutzte es mit großem Erfolg. –

+4

Sollte Request.ServerVariables ["REMOTE_ADDR"] in C# sein – Dean

4

von

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

mit Ihnen wird Benutzer IP-Adresse erhalten. Anhand dieser IP-Adresse können Sie Informationen zum Besucherstandort abrufen, indem Sie einen Anruf unter webservice tätigen.

+0

Diese Servervariable ist nur verfügbar, wenn sich Ihr Webserver hinter einem Proxy oder einer Art Netzwerkgerät befindet. – David

+1

Ich glaube, das war der springende Punkt seiner Logik, dies zu überprüfen und dann auf die Benutzer-Host-Adresse zurückzugreifen, wenn sie nicht existiert. – Justin

2

IPAddressExtensions ist eine kostenlose Codeplex-Klassenbibliothek, wenn Sie nur das Land haben möchten, aus dem die IP stammt.

2

Ermitteln Sie zuerst die IP-Adresse des Besuchers mit Request.ServerVariables ("REMOTE_ADDR"). Bedenken Sie, dass der Besucher einen Proxy-Server verwenden könnte. In diesem Fall ist die IP-Adresse möglicherweise nicht die tatsächliche IP-Adresse. Für den Proxy-Fall können Sie überprüfen, ob Request.ServerVariables ("HTTP_X_FORWARDED_FOR") einen Wert enthält. Dies ist die tatsächliche IP-Adresse, wenn der Proxy-Server kein anonymer Proxy-Server ist.

Dann haben Sie 2 Möglichkeiten, einen Webservice zu verwenden oder Daten aus Ihrer eigenen Datenbank abzufragen. In beiden Fällen benötigen Sie Daten, die mit einer IP-Adresse des Besuchers in Land, Staat und Stadt übereinstimmen.

0

Dies ist, was ich verwendet habe:

<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> 
Verwandte Themen