无法在我发布的网站上获取客户端的 IP 地址

Cant Get the IP Address Of the client On my Published Website

我实现了一个简单的 API,return 是客户端 "Request Sender" 的 IP 地址。当我在网络外部时,它总是 returns 相同的 ip 地址,而在网络内部时它工作得很好并且它 returns 是设备的本地 ip 地址。 该网站托管在 IIS 上 api 逻辑如下:

public static class iphelper
    {
        private const string HttpContext = "MS_HttpContext";
        private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";

        public static string GetClientIpAddress(this HttpRequestMessage request)
        {
            if (request.Properties.ContainsKey(HttpContext))
            {
                dynamic ctx = request.Properties[HttpContext];
                if (ctx != null)
                {
                    return ctx.Request.UserHostAddress;
                }
            }

            if (request.Properties.ContainsKey(RemoteEndpointMessage))
            {
                dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];
                if (remoteEndpoint != null)
                {
                    return remoteEndpoint.Address;
                }
            }

            return null;
        }
    }
}

我已经尝试了所有的片段,return都一样。我的项目使用 ASP.NET MVC C#。

我试过 HTTP_X_FORWARDED_FOR 总是 return 没有

很可能它与负载平衡器或网络设备有关您的网络服务器之前。

鉴于:

REMOTE_ADDR reruns 192.168.130.140

我建议询问您的运营团队 运行 该 IP 上的机器是什么,以及它如何通过调用 IP 地址(可能通过 X-Forwarded-For)。