gpt4 book ai didi

asp.net-mvc - 如何在.NET MVC中获取用户当前访问的国家/地区位置?

转载 作者:行者123 更新时间:2023-12-04 14:54:13 27 4
gpt4 key购买 nike

我已经浏览了这么多文件,但没有一个适合我。我已关注 a link

我想通过 IP 地址获取当前用户的位置。但是,我的 ipAddress总是显示 null然后 ::1 .我不知道我做错了什么。

任何人都可以请帮助我克服这个问题。

模型

   public class LocationModel
{
public string IP { get; set; }
public string Country_Code { get; set; }

}

Controller
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress))
{
ipAddress = Request.ServerVariables["REMOTE_ADDR"];
}
LocationModel location = new LocationModel();
string url = string.Format("http://freegeoip.net/json/{0}", ipAddress);
using (WebClient client = new WebClient())
{
string json = client.DownloadString(url);
location = new JavaScriptSerializer().Deserialize<LocationModel>(json);
}

return View(location);
}
}

看法
@model IPAddress_Location_MVC.Models.LocationModel

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Index</title>
</head>
<body>
<table cellpadding="0" cellspacing="0">
<tr><td>IP</td><td>@Model.IP</td></tr>
<tr><td>Country Code</td><td>@Model.Country_Code</td></tr>
</table>
</body>
</html>

最佳答案

就像 Nilesh 指出的那样;你得到的回应是有效的。::1 是 IPv6 环回地址的缩写。这相当于 IPv4 127.0.0.0 或本地主机。 由于您在本地运行它并在本地连接,因此它会报告您的本地主机地址。 如果您在与您自己的机器不同的机器上运行此代码,并从您自己的机器连接到它,您将得到一个“真实”的 ip 返回。

您提到的第二点是您收到“远程服务器返回错误:(403) 禁止”。调用 FreeGeoIP 服务时是因为该端点不再使用。 (只需浏览该 URL: http://freegeoip.net/json/ )为了完整,它返回此消息:

IMPORTANT - PLEASE UPDATE YOUR API ENDPOINT This API endpoint is deprecated and has now been shut down. To keep using the freegeoip API, please update your integration to use the new ipstack API endpoint, designed as a simple drop-in replacement. You will be required to create an account at https://ipstack.com and obtain an API access key. For more information on how to upgrade please visit our Github Tutorial at: https://github.com/apilayer/freegeoip#readme



更新:

新 API 的格式如下:

http://api.ipstack.com/IP_FOR_LOOKUP?access_key=YOUR_ACCESS_KEY&output=json&legacy=1



为了读取结果(Json),您可以使用像 NewtonSoft 这样的 Json 解串器。您需要在您的项目中引用 Newtonsoft.Json 包并创建一个代表结果的 POCO。然后调用 Newtonsoft 将 Json 反序列化为您的对象。例如,您可以查看 their documentation .

关于asp.net-mvc - 如何在.NET MVC中获取用户当前访问的国家/地区位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51256728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com