Определить/оценить страну http-запроса в ASP.NET
Я ищу способы определить/оценить страну, из которой http-запрос входит ASP.NET. < ш > Я знаю, что есть некоторые решения с услугами/поиском в стране, но я никогда не использовал их.
Я ищу небольшие/чистые решения.
Это помогает кому-то заполнить форму, чтобы она не была на 100% точнее.
Спасибо заранее.
Ответы
Ответ 1
Вы можете использовать одну из доступных веб-сервисов для соответствия входящему запросу в страну.
В противном случае вы можете решить захватить файл базы данных MaxMind (GeoLite Country), прочитать из этого файла в своем приложении и выполнить совпадение. Таким образом, вы будете независимы от стороннего сервиса, только регулярно выгружая обновления для файла базы данных.
Также проверьте похожие вопросы:
Рекомендации веб-службы геолокации
Знать хороший IP-адрес Geolocation Service?
Ответ 2
Вы можете сделать простой HTTP-запрос по этому URL-адресу:
http://api.hostip.info/get_html.php?ip=207.46.197.32
используя значение переменной сервера REMOTE_ADDR
. Это вернет страну и город следующим образом:
Country: UNITED STATES (US)
City: New York, NY
Я использую эту службу для веб-формы так же, как вы описываете. Иногда он не знает ответа, но обычно это очень хорошо (и это бесплатно и просто 8 -)
В С# вы можете использовать System.Net.WebRequest.Create для чтения с URL-адреса.
Ответ 3
Если вы решите использовать переменную сервера REMOTE_ADDR, вы можете быть уверены, что IP-адрес, который вы восстанавливаете, точно представляет страну происхождения этого пользователя. Для пользователя довольно редко возникает доступ к Интернету за пределами страны, в которой он сейчас находится, с несколькими заметными исключениями, например, теми, кто предпочитает работать в анонимном прокси-сервере, например, обсуждается ниже. Если, однако, вы хотите получить состояние, из которого пользователь приходит или аутентифицировать личность пользователя, вам не повезло, насколько любой даже отдаленно надежный метод.
Подробнее здесь.
Ответ 4
Мне просто нужно было сделать это, вот рабочий пример (специфический для Франции), который может кому-то помочь:
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");
}
Ответ 5
Это то, что я использовал:
<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>
Простой, и он работает.