2009-08-06 8 views
3

Comment trouver l'emplacement des clients dans ma page ASP.NET? En fait j'ai utilisé System.Globalization.RegionInfo.CurrentRegion, mais il montre le réglage dans le panneau de contrôle. Puis-je trouver l'emplacement exact en utilisant n'importe quelle méthode?Recherche de l'emplacement des clients dans une page ASP.NET

+0

Avec une application ASP.NET, System.Globalization.RegionInfo.CurrentRegion ne vous montrera que les informations de région du serveur Web, pas les navigateurs Web clients. –

Répondre

1

Vous pouvez deviner le pays auquel l'adresse IP appartient en effectuant une recherche sur l'adresse IP du client. Il y a quelques pages qui fournissent des bases de données contenant des IP aux tables de mappage de pays., Voir here par exemple

5

Non que cela vous donne 100% de précision, mais vous pouvez utiliser hostip.info

Ils fournissent une API qui vous donne la l'emplacement d'une adresse IP que vous leur transmettez via une requête HTTP. Vous pouvez utiliser un objet WebClient pour effectuer des appels à l'API et analyser les résultats. Scott Hanselman a un assez bel exemple dans this blog article (mon exemple ci-dessous est basé sur son article). La base de données de hostip.info est basée sur un projet ouvert que la communauté fournit des adresses IP à ... donc il n'y a aucune garantie d'être correct.

Pour commencer, vous devez déterminer l'adresse IP du client comme suit:

string ipaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 

Une fois que vous avez l'adresse IP, vous pouvez créer un objet WebClient et appeler l'API ...

Exemple API appel:

string r; 
using (var w = new WebClient()) 
{ 
    r = w.DownloadString(String.Format("http://api.hostip.info/?ip={0}&position=true", ipaddress)); 
} 

Les résultats seront XML qui ressemble à ceci:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<HostipLookupResultSet version="1.0.0" xmlns="http://www.hostip.info/api" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.hostip.info/api/hostip-1.0.0.xsd"> 
<gml:description>This is the Hostip Lookup Service</gml:description> 
<gml:name>hostip</gml:name> 
<gml:boundedBy> 
    <gml:Null>inapplicable</gml:Null> 
</gml:boundedBy> 
<gml:featureMember> 
    <Hostip> 
    <gml:name>Sugar Grove, IL</gml:name> 
    <countryName>UNITED STATES</countryName> 
    <countryAbbrev>US</countryAbbrev> 
    <!-- Co-ordinates are available as lng,lat --> 
    <ipLocation> 
     <gml:PointProperty> 
     <gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> 
      <gml:coordinates>-88.4588,41.7696</gml:coordinates> 
     </gml:Point> 
     </gml:PointProperty> 
    </ipLocation> 
    </Hostip> 
</gml:featureMember> 
</HostipLookupResultSet> 
3

IPAddressExtensions est une bibliothèque de classes CodePlex gratuit si tout ce que vous voulez est le pays de l'adresse IP est situé dans.

Il ne nécessite pas une connexion à un autre site Web, etc. Et il est open source .. alors allez nuts;)

Questions connexes