MvcThrottle.IpAddressParser.GetClientIp C# (CSharp) Method

GetClientIp() public method

public GetClientIp ( System.Web.HttpRequestBase request ) : string
request System.Web.HttpRequestBase
return string
        public virtual string GetClientIp(HttpRequestBase request)
        {
            var ipAddress = request.UserHostAddress;

            // get client IP from reverse proxy
            var xForwardedFor = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (!string.IsNullOrEmpty(xForwardedFor))
            {
                // Search for public IP addresses
                var publicForwardingIps = xForwardedFor.Split(',').Where(ip => !IsPrivateIpAddress(ip)).ToList();

                // If we found any public IP, return the last one, otherwise return the user host address
                return publicForwardingIps.Any() ? publicForwardingIps.Last().Trim() : ipAddress;
            }

            return ipAddress;
        }