Mukund Thakker
Ip - это интернет-протокол для связи между узлами.
Ip-адрес используется для идентификации хоста и адреса местоположения. Если нам нужно идентифицировать пользователя
кто все заходят на наш сайт и хранят ip-адрес в нашей базе данных очень просто и очень просто.
Это способ отслеживать ip-адрес пользователя. Принести IP-адрес клиента, как только он открыть наш веб-сайт в asp.net.
Некоторые из них могут использовать прокси-ip-адрес. Но мы можем получить их ip-адрес с помощью этого простого кода.
Добавьте следующее пространство имен на страницу
использование System.Net;
string ipAddress ="";
//Get the Host Name
string hostName = Dns.GetHostName();
//Get The Ip Host Entry
IPHostEntry ipHostEntry = Dns.GetHostEntry(hostName);
//Get The Ip Address From The Ip Host Entry Address List
IPAddress[] ipAddress = ipHostEntry.AddressList;
ipAddress = ipAddress[ipAddress.Length - 1].ToString();
Чтобы получить геолокацию IP-адреса, вы можете использовать различные API, которые дадут вам результат в различных форматах(csv,xml)
http://www.ipinfodb.com/ip_location_api.php
Вы можете получить информацию о геолокации от
http://api.ipinfodb.com/v2/ip_query.php?key=<your_api_key>&ip=74.125.45.100&timezone=false
Ответ приходит в формате XML. используя XML deserialize, я десериализую ответ.
[XmlRootAttribute(ElementName = "Response", IsNullable = false)]
public class IPLocator
{
private string longitude;
public string Longitude
{
get { return longitude; }
set { longitude = value; }
}
private string latitude;
public string Latitude
{
get { return latitude; }
set { latitude = value; }
}
private string zip;
public string Zip
{
get { return zip; }
set { zip = value; }
}
private string ip;
public string IP
{
get { return ip; }
set { ip = value; }
}
}
После десериализации класс IPLocater связывает все свойства запрашиваемого IP-адреса.
Класс привязки-это возвращаемый класс IPLocater.
Код класса IPDetals
public IPLocator GetData(string ipAddress)
{
IPLocator ipLoc = new IPLocator();
try
{
//apiKey can be generated from below link
//http://www.ipinfodb.com/ip_location_api.php
string apiKey = "anykey";
string path = "http://api.ipinfodb.com/v2/ip_query.php?key=" + apiKey + "&ip=" + ipAddress + "&timezone=false";
WebClient client = new WebClient();
string[] eResult = client.DownloadString(path).ToString().Split(',');
if (eResult.Length > 0)
ipLoc = (IPLocator)Deserialize(eResult[0].ToString());
}
catch
{ }
return ipLoc;
}
//Desrialize XML String
private Object Deserialize(String pXmlizedString)
{
XmlSerializer xs = new XmlSerializer(typeof(IPLocator));
MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
return xs.Deserialize(memoryStream);
}
//String to UTF8ByteArray
private Byte[] StringToUTF8ByteArray(String pXmlString)
{
UTF8Encoding encoding = new UTF8Encoding();
Byte[] byteArray = encoding.GetBytes(pXmlString);
return byteArray;
}
}
//You can get the Geolocation infoamation here
string ipAddress = HttpContext.Current.Request.UserHostAddress;
IPDetails ipDetails=new IPDetails ();
IPLocator ipLocater = ipDetails.GetData(ipAddress);
Response.Write(ipLocater.CountryName);