使用 ASP.NET 核心 3.1 Web API 获取用户的 IP 地址



我正在使用ASP。. NET Core 3.1 Web API。我想获得用户的Ip地址。我被卡住了很长时间,请帮助我,非常感谢!

@Abdelkrim的回答是足够的,如果你想使用IPv6地址,更独特的定义,因此更加安全。然而,IPv4地址仍然比IPv6更常见,所以它成为一个可访问性与安全问题(可访问性获胜,顺便说一句,不想让你的应用程序无法访问世界的一半)。

然而,要使用IPv4地址,您可以简单地扩展Abdelkrim的回答中的代码如下:

var ipv4 = HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();

将返回任何IP地址为^[0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3}.[0-9]{0,3},即IPv4格式。

至于你对本地主机IP地址的困惑:当开发任何在本地网络(API,网站等)上运行的应用程序时,该实例将在中运行。这在你的PC内部由::1 IP地址表示,或0.0.0.1,或0:0:0:0:1。更常见的本地主机地址是127.0.0.1。

此地址完全限制在您自己的系统中,不能与外部通信。

cmd中的ipconfig命令返回您的PC用于与外部通信的IP地址。这个IP地址与本地主机完全无关,也不关心对方的存在。

因此,您用来获取PC的IP地址的网站将返回您的PC用于与外界通信的网站(ipconfig也返回的网站),而不是您的本地主机IP。

希望你的编码问题的答案是有帮助的,关于localhost的解释是清楚的!

在控制器你可以叫:

var remoteIpAddress = HttpContext.Connection.RemoteIpAddress.ToString();

你可以通过简单的谷歌搜索得到答案。

最新更新