我正在使用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格式。
此地址完全限制在您自己的系统中,不能与外部通信。
cmd中的ipconfig
命令返回您的PC用于与外部通信的IP地址。这个IP地址与本地主机完全无关,也不关心对方的存在。
因此,您用来获取PC的IP地址的网站将返回您的PC用于与外界通信的网站(ipconfig
也返回的网站),而不是您的本地主机IP。
希望你的编码问题的答案是有帮助的,关于localhost的解释是清楚的!
在控制器你可以叫:
var remoteIpAddress = HttpContext.Connection.RemoteIpAddress.ToString();
你可以通过简单的谷歌搜索得到答案。