正在浏览我的网站的用户的IP地址

时间:2012-12-10 09:37:00

标签: c# http ip-address

我想知道客户端计算机的IP地址,即浏览我网站的用户的IP地址。我正在尝试以下代码,但它返回服务器地址 -

public string GetClientIP()
{
    string result = string.Empty;
    string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (!string.IsNullOrEmpty(ip))
    {
        string[] ipRange = ip.Split(',');
        int le = ipRange.Length - 1;
        result = ipRange[0];
    }
    else
    {
        result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    }

    return result;
}

如何找到合适的IP地址?

4 个答案:

答案 0 :(得分:5)

可以从请求中读取客户端IP:

context.Request.ServerVariables["REMOTE_HOST"] 

以下是获取客户端IP地址以外的代码:

string browserInfo =
             "RemoteUser=" + context.Request.ServerVariables["REMOTE_USER"] + ";\n"
            + "RemoteHost=" + context.Request.ServerVariables["REMOTE_HOST"] + ";\n"
            + "Type=" + context.Request.Browser.Type + ";\n"
            + "Name=" + context.Request.Browser.Browser + ";\n"
            + "Version=" + context.Request.Browser.Version + ";\n"
            + "MajorVersion=" + context.Request.Browser.MajorVersion + ";\n"
            + "MinorVersion=" + context.Request.Browser.MinorVersion + ";\n"
            + "Platform=" + context.Request.Browser.Platform + ";\n"
            + "SupportsCookies=" + context.Request.Browser.Cookies + ";\n"
            + "SupportsJavaScript=" + context.Request.Browser.EcmaScriptVersion.ToString() + ";\n"
            + "SupportsActiveXControls=" + context.Request.Browser.ActiveXControls + ";\n"
            + "SupportsJavaScriptVersion=" + context.Request.Browser["JavaScriptVersion"] + "\n";

答案 1 :(得分:3)

string IPAddress = string.Empty;
string SearchName = string.Empty;

String strHostName = HttpContext.Current.Request.UserHostAddress.ToString();

IPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();

答案 2 :(得分:1)

您可以使用“HTTP_X_FORWARDED_FOR”或“REMOTE_ADDR”标头属性。

developersnote.com blog引用方法GetVisitorIPAddress。

     /// <summary>
    /// method to get Client ip address
    /// </summary>
    /// <param name="GetLan"> set to true if want to get local(LAN) Connected ip address</param>
    /// <returns></returns>
    public static string GetVisitorIPAddress(bool GetLan = false)
    {
        string visitorIPAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (String.IsNullOrEmpty(visitorIPAddress))
            visitorIPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

        if (string.IsNullOrEmpty(visitorIPAddress))
            visitorIPAddress = HttpContext.Current.Request.UserHostAddress;

        if (string.IsNullOrEmpty(visitorIPAddress) || visitorIPAddress.Trim() == "::1")
        {
            GetLan = true;
            visitorIPAddress = string.Empty;
        }

        if (GetLan)
        {
            if (string.IsNullOrEmpty(visitorIPAddress))
            {
                //This is for Local(LAN) Connected ID Address
                string stringHostName = Dns.GetHostName();
                //Get Ip Host Entry
                IPHostEntry ipHostEntries = Dns.GetHostEntry(stringHostName);
                //Get Ip Address From The Ip Host Entry Address List
                IPAddress[] arrIpAddress = ipHostEntries.AddressList;

                try
                {
                    visitorIPAddress = arrIpAddress[arrIpAddress.Length - 2].ToString();
                }
                catch
                {
                    try
                    {
                        visitorIPAddress = arrIpAddress[0].ToString();
                    }
                    catch
                    {
                        try
                        {
                            arrIpAddress = Dns.GetHostAddresses(stringHostName);
                            visitorIPAddress = arrIpAddress[0].ToString();
                        }
                        catch
                        {
                            visitorIPAddress = "127.0.0.1";
                        }
                    }
                }
            }
        }


        return visitorIPAddress;
    }

答案 3 :(得分:0)

string myIP = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim();

注意:要获取公共IP地址,请使用此地址。