获取 HTTP 客户端的 IP 地址

Get IP-address of HTTP client

我尝试获取向服务器发送 HTTP 请求的客户端的 IP 地址和端口。我使用了 HttpListenerRequest class 的属性。 UserHostAddress 属性 returns 服务器的 ip 和端口,但不是客户端。 RemoteEndPoint returns 一些 ip 和端口但它不是真正的客户端 ip(我知道客户端请求来自端口 1234)并且每次它 returns 不同的数据(我不知道为什么)。我该如何解决这个问题?也许我应该在客户端设置 http header From

非常感谢!

基于 SO answer, 我认为这会对您有所帮助...

   protected void GetUser_IP()
{
    string VisitorsIPAddr = string.Empty;
    if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
    {
        VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    }
    else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
    {
        VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress;
    }
    uip.Text = "Your IP is: " + VisitorsIPAddr;
}