首页 文章

获取客户端外部IP或客户端LAN IP

提问于
浏览
0
public static string GetClientExternalIp()
{
    HttpContext context = 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"];
}

我正在努力使用上面的代码片段,我想获得客户端外部IP地址,就像你在浏览http://checkip.dyndns.org时所看到的那样,但是上面的片段返回服务器的IP地址 . 我需要的是客户端连接的LAN的IP地址,而不是Web服务器IP .

2 回答

  • -2

    使用HttpRequest.UserHostAddress

    HttpContext.Current.Request.UserHostAddress;
    

    我使用上面的代码行,它返回客户端的IP地址 .

  • 0

    试试这个..这对我有用 .

    通过使用此方法,您可以获取客户端IP地址而不是服务器IP .

    public static string GetClientIP()
    {
        try
        {
            string VisitorsIPAddress = string.Empty;
            if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
            {
                VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            }
            else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
            {
                VisitorsIPAddress = HttpContext.Current.Request.UserHostAddress;
            }
            return VisitorsIPAddress;
        }
        catch (Exception)
        {
            return null;
        }
    }
    

相关问题