下面我们来详细讲解如何实现“ASP.NET纯真ip库取得所在地实现代码”。
步骤一:下载纯真IP库
首先需要下载纯真IP库,可以在纯真IP数据库官网或者其他网站下载。下载完成后,解压缩得到一个.dat格式的文件。
步骤二:将IP库文件复制到项目中
将从官网上下载的IP库文件复制到项目中,推荐将此文件存放在项目下的/App_Data目录下。
步骤三:编写代码实现调用IP库文件
使用ASP.NET的特性,可以轻松实现IP地址定位,下面是实现的具体代码:
private string GetIPAddress()
{
string UserIP;
HttpRequest Request = HttpContext.Current.Request;
// 如果使用代理,获取真实IP
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "")
UserIP = Request.ServerVariables["REMOTE_ADDR"];
else
UserIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
return UserIP;
}
private string GetIPAddressLocation(string strIPaddress)
{
string strLocation = "未知区域";
string DatPath = Server.MapPath("~/App_Data/IPAddress.Dat");
QQWry.Content QQWryData = new QQWry.Content(DatPath);
QQWry.Location LocationData = QQWryData.Query(strIPaddress);
if (LocationData != null)
strLocation = LocationData.Country + "-" + LocationData.Area;
else
strLocation = "无法查到该IP地址";
return strLocation;
}
上面的代码核心在于使用QQWry IP地址库,QQWry IP地址库是一款较为准确、稳定的IP库,大家可以自行到网上下载并使用。
使用方法如下:在需要获取IP地理位置的Controller中定义两个方法,第一个是获取当前用户IP地址的方法,第二个是根据IP地址获取所在地的方法。
其中GetIPAddress()
方法用于获取当前用户IP地址,这个方法是针对有代理访问用户有效的。如果没有使用代理,可以直接从HttpRequest对象的ServerVariables集合中获取REMOTE_ADDR实现。
GetIPAddressLocation()
方法则是基于QQWry IP地址库实现的,传入参数为IP地址字符串,返回值为IP地址所在地,如果找不到则返回“无法查到该IP地址”。在处理IP地址获取时,首先指定QQWry IP地址库的存储位置,这里将其App_Data
目录下的IPAddress.Dat
文件读入内存。QQWry IP地址库提供了Query
方法,该方法返回IP地址所在区域的详细信息。
示例1:实现IP地址定位功能
下面是一个简单的示例,在View中定义一个表单和一个标签,输入IP地址,点击提交按钮可以发布IP地址的所在位置。
@using (Html.BeginForm())
{
@Html.TextBox("txtIPAddress", "", new { @placeholder="请输入IP地址", @class="form-control" })
<br />
<input type="submit" value="查询" class="btn btn-default" />
}
@if (ViewBag.LocationData != null)
{
<h3>您查询的IP地址所在为:@ViewBag.LocationData</h3>
}
在Controller中实现功能:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(string txtIPAddress)
{
ViewBag.LocationData = GetIPAddressLocation(txtIPAddress);
return View();
}
上面的示例代码中,Index()
方法返回View,方法中没有传递参数。在View中,输入IP地址,点击查询
按钮,将IP地址传递给后台处理。将返回的结果赋值给ViewBag.LocationData属性,并在View中输出。
示例2:在注册信息中记录下用户所在地
下面是一个示例,在注册信息的提交时,通过IP地址获取用户所在地,并记录下来。
[HttpPost]
public ActionResult Register(UserInfo model)
{
// 获取客户端IP地址
string ipaddress = GetIPAddress();
// 获取IP地址所在地
string location = GetIPAddressLocation(ipaddress);
// 记录用户所在地
model.Location = location;
// 保存注册信息
db.UserInfoes.Add(model);
db.SaveChanges();
return RedirectToAction("Index");
}
在代码中,声明了一个UserInfo
数据表,表中包含用户注册时需要提交的信息。在Register()
方法中,获取用户提交的信息和IP地址,通过GetIPAddressLocation()
方法获取IP地址所在地,并将该地信息保存在Location
字段中。最后保存用户的注册信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net 纯真ip库取得所在地实现代码 - Python技术站