如何从 ASP.NET 中的请求中获取 IP 地址?

Posted

技术标签:

【中文标题】如何从 ASP.NET 中的请求中获取 IP 地址?【英文标题】:How do you get the IP address from a request in ASP.NET? 【发布时间】:2010-10-26 09:40:06 【问题描述】:

我一直在尝试解决这个问题,但在向适用于所有服务器的 asp.net 中的页面发出请求时,找不到可靠的方法来获取客户端 IP 地址。

【问题讨论】:

这个问题之前有人问过。检查这些链接:- - How to get user client ip address in asp.net? - Browser IP Address HTH。 (投票结束)。 【参考方案1】:

您可以将 HttpContext 与以下属性一起使用:

var _request1 = HttpContext.Current.Request.UserHostAddress;
        string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
        string requestScheme = HttpContext.Current.Request.Url.Scheme;
        string requestQueryString = HttpContext.Current.Request.ServerVariables["QUERY_STRING"];
        string requestUrl = HttpContext.Current.Request.ServerVariables["URL"];

【讨论】:

【参考方案2】:

如果客户端和服务器之间有代理。 HTTP_X_FORWARDED_FOR 标头可以使用。

var ips = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
var clientIp = "";
if (!string.IsNullOrEmpty(ips))

    string[] addresses = ips.Split(',');
    if (addresses.Length != 0)
    
        clientIp = addresses[0];
    

else

    clientIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

【讨论】:

【参考方案3】:

试试这个代码:

var IpAddress = Request.Headers["Referer"][0];

【讨论】:

请考虑为您的问题添加一些描述,或者可能是指向此文档的链接。这将有助于这个答案在未来更加完整和有用。【参考方案4】:
Request.ServerVariables["REMOTE_ADDR"]

要访问 C# 上的索引或属性,您应该使用 [ ] 而不是 ( )

【讨论】:

不可调用的成员 'System.Web.HttpRequest.ServerVariables' 不能像方法一样使用。【参考方案5】:
System.Web.HttpContext.Current.Request.UserHostAddress;

【讨论】:

您可能想解释为什么这个答案比已经给出的答案更好(2009 年和 2015 年) @HansKesting 这是完整的参考。这不是提问者的答案,但对于今天其他任何人都需要它【参考方案6】:

使用此代码:

public static string GetIpAddress()
    
        return HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "";
    

【讨论】:

请更好地解释您的答案,而不是仅仅输入代码。试着解释一下你为什么这样回答。 HttpContext.Current.Request.UserHostAddress 这包含我们的IP地址首先我们必须检查HttpContext.Current是否为空 在 Asp.net public static string GetIpAddress() return HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : ""; 【参考方案7】:
 IpAddress=HttpContext.Current.Request.UserHostAddress;

【讨论】:

【参考方案8】:

一种方法是使用Request对象:

protected void Page_Load(object sender, EventArgs e)

    lbl1.Text = Request.UserHostAddress;

【讨论】:

以上是关于如何从 ASP.NET 中的请求中获取 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 3.1 - 如何获取客户端的 IP 地址?

用户运行托管 IIS 链接时如何在 asp.net 中获取客户端 IP 地址

Asp Net Web API 2.1 获取客户端IP地址

如何在asp.net中获取IP地址

ASP.NET如何获取被请求的URL

获取远程主机的IP地址