如何从 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 地址?