Поиск расположения клиентов на странице ASP.NET

Как найти расположение клиентов на моей странице ASP.NET? На самом деле я использовал System.Globalization.RegionInfo.CurrentRegion, но он показывает настройку на панели управления. Так я могу найти точное местоположение, используя любой метод?

3 ответа

Не то чтобы это дало бы вам 100% точность, но вы можете использовать hostip.info

Они предоставляют API, который дает вам местоположение IP-адреса, который вы передаете им через HTTP-запрос. Вы можете использовать объект WebClient для выполнения вызовов API и анализа результатов. Скотт Хансельман имеет довольно хороший пример в этой статье блога (мой пример ниже основан на его статье). База данных hostip.info основана на открытом проекте, который сообщество предоставляет IP-адресам, поэтому нет никакой гарантии, что он будет правильным.

Для начала вам необходимо определить IP-адрес клиента следующим образом:

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

Когда у вас есть IP, вы можете создать объект WebClient и вызвать API...

Пример вызова API:

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

Результатом будет XML, который выглядит примерно так:

<?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>

IPAddressExtensions - это бесплатная библиотека классов CodePlex, если вам нужна только страна, в которой находится IP-адрес.

Это не требует подключения к другому веб-сайту и т. Д. И это с открытым исходным кодом.. так офигеть;)

Вы можете угадать страну, которой принадлежит IP-адрес, выполнив поиск по IP-адресу клиента. Есть несколько страниц, которые предоставляют базы данных, содержащие таблицы сопоставления IP и страны., См. Здесь, например,

Другие вопросы по тегам