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

时间:2014-11-10 11:03:30

标签: c# asp.net webrequest

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 个答案:

答案 0 :(得分:0)

使用HttpRequest.UserHostAddress

HttpContext.Current.Request.UserHostAddress;

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

答案 1 :(得分:-2)

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

通过使用此方法,您可以获取客户端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;
    }
}