我正在开发一个需要查找用户远程 IP 地址的 ASP.NET 项目。我四处寻找,我发现了这个:
Request.ServerVariables["REMOTE_ADDR"]
问题是它只返回 "::1" 而不是 IP 地址。可能是因为我使用本地服务器而出现问题吗?
是的,这是因为您使用的是本地服务器。
该地址"::1"
是 的 IPv6 地址localhost
。
获取用户 IP 地址没有万无一失的方法,因为沿途可能有很多代理服务器。您收到的结果对于 localhost 是正确的,但REMOTE_ADDR
如果客户端来自外部,则会返回列表中的最后一个代理。有一个 HTTP 标头列表,其中可能包含实际的 IP 地址,但也可以伪造。您可以阅读以下博客文章了解更多详细信息(您还应该阅读评论):
尝试这个:
using System.Net;
string host = Dns.GetHostName();
IPHostEntry ip = Dns.GetHostEntry(host);
Console.WriteLine(ip.AddressList[1].ToString());