Request.UserHostAddress return IP address of Load Balancer

前端 未结 3 1553
无人及你
无人及你 2021-02-06 03:13

I have a critical line of code in my site that worked in our development environment but not on production. Well, I say it worked in development but the truth is it gave

3条回答
  •  面向向阳花
    2021-02-06 03:52

    In reference to @Damien_The_Unbeliever's answer, here's the complete solution:

    public static string GetIpAddress()
    {
      var request = HttpContext.Current.Request;
      // Look for a proxy address first
      var ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    
      // If there is no proxy, get the standard remote address
      if (string.IsNullOrWhiteSpace(ip)
          || string.Equals(ip, "unknown", StringComparison.OrdinalIgnoreCase))
        ip = request.ServerVariables["REMOTE_ADDR"];
      else
      {
        //extract first IP
        var index = ip.IndexOf(',');
        if (index > 0)
          ip = ip.Substring(0, index);
    
        //remove port
        index = ip.IndexOf(':');
        if (index > 0)
          ip = ip.Substring(0, index);
      }
    
      return ip;
    }
    

提交回复
热议问题