C# 在ASP.NET中获取客户端IP地址

C# 在ASP.NET中获取客户端IP地址,c#,asp.net,http,C#,Asp.net,Http,如何获取客户端的IP地址?当我使用HttpContext.Current.Request.ServerVariables[“REMOTE\u ADDR”]时,我得到了类似[::1]:12473的结果 当我使用HttpContext.Current.Request.UserHostAddress时,我一直得到::1当您在本地运行代码时,您会得到::1(localhost)。 如果发布到Azure,则应获得正确的IP地址 您还可以通过检查HTTP_X_FORWARDED_for header来扩展代

如何获取客户端的IP地址?当我使用
HttpContext.Current.Request.ServerVariables[“REMOTE\u ADDR”]
时,我得到了类似[::1]:12473的结果


当我使用HttpContext.Current.Request.UserHostAddress时,我一直得到::1

当您在本地运行代码时,您会得到::1(localhost)。 如果发布到Azure,则应获得正确的IP地址

您还可以通过检查HTTP_X_FORWARDED_for header来扩展代码。当涉及代理和/或负载平衡器时,这将返回正确的客户端IP地址

string ipAddress = HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress))
{
    ipAddress = HttpContext.Request.ServerVariables["REMOTE_ADDR"];
}

当您在本地运行代码时,会得到一个::1(localhost)。 如果发布到Azure,则应获得正确的IP地址

您还可以通过检查HTTP_X_FORWARDED_for header来扩展代码。当涉及代理和/或负载平衡器时,这将返回正确的客户端IP地址

string ipAddress = HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress))
{
    ipAddress = HttpContext.Request.ServerVariables["REMOTE_ADDR"];
}

这是一个IP地址。它是IPv6。我的意思是,第一个后面有一个端口号,但是::1是一个IP地址。特别是localhost。等同于IPv4中的127.0.0.1。@itsme86正确,但这是localhost的ip地址对吗?客户端的ip地址如何?您不是从服务器访问网站吗?@itsme86该网站托管在Azure上。我想获取从浏览器访问网站的客户的ip地址。也许这是某种奇怪的事情。据我所知,你找对了地方。那是一个IP地址。它是IPv6。我的意思是,第一个后面有一个端口号,但是::1是一个IP地址。特别是localhost。等同于IPv4中的127.0.0.1。@itsme86正确,但这是localhost的ip地址对吗?客户端的ip地址如何?您不是从服务器访问网站吗?@itsme86该网站托管在Azure上。我想获取从浏览器访问网站的客户的ip地址。也许这是某种奇怪的事情。据我所知,你找对了地方。我实际上使用的是相同的代码。当我在笔记本电脑家庭WiFi连接上点击发布到Azure的网站时,它给了我类似[::1]:12473的信息,但当我在LTE上从手机上点击它时,它给了我一个更典型的ip地址,比如91.458.910.178:14912,我实际上使用的是相同的代码。当我在笔记本电脑家庭WiFi连接上点击发布到Azure的网站时,它给了我类似于[::1]:12473的信息,但当我在LTE上从手机点击它时,它给了我一个更典型的ip地址,如91.458.910.178:14912