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

Get User's Ip address using ASP.NET Core 3.1 Web API

我正在使用 ASP.NET Core 3.1 Web API。我想获取用户的 IP 地址。卡了好久了,求大神指教,万分感谢!

在控制器中你可以调用:

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

您可以通过简单的 Google 搜索获得答案。

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

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

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

这将 return 任何 IP 地址作为 ^[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{0,3},即作为 IPv4 格式。

至于您对本地主机 IP 地址的混淆:在本地开发网络(API、网站等)上 运行 的任何应用程序时,该实例将 运行 inside 可以这么说。您的 PC 内部由 ::1 IP 地址或 0.0.0.1 或 0:0:0:0:0:1 表示。更广为人知的本地主机地址是 127.0.0.1.

该地址完全限制在自己的系统中,不与外界通信

命令ipconfig in cmd returns 您的PC用于与外界通信的IP地址。这个IP地址与localhost完全无关,也不关心对方的存在

因此,您用来获取 PC IP 地址的网站将 return 您的 PC 用来与外界通信的网站(return 由 ipconfig 编辑的网站嗯),不是你的本地主机 IP。

希望您的编码问题的答案对您有所帮助,并且关于 localhost 的解释很清楚!