如果服务器在路由器后面,如何获取用户的公共 IP?

5 c# asp.net ip router

如果我的服务器在路由器后面,如何获取用户的公共 IP?

我想:

protected string GetIPAddress() 
{
    System.Web.HttpContext context = System.Web.HttpContext.Current;
    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (!string.IsNullOrEmpty(ipAddress))
    {
        string[] addresses = ipAddress.Split(',');
        if (addresses.Length != 0)
        {
            return addresses[0];
        }
    }
    return context.Request.ServerVariables["REMOTE_ADDR"]; 
}
Run Code Online (Sandbox Code Playgroud)

但我得到的只是路由器网关。

显然,REMOTE_ADDR在我的情况下不起作用,也不会HTTP_X_FORWARDED_FOR

关于如何在我的情况下获取用户的公共 IP 的任何想法?

谢谢。

小智 0

没有办法得到它。

但是,您可以了解用户是从本地网络还是从网络打开页面。

如果IP是路由器分配给来自网络的请求的IP,那么很明显它来自网络。