Often we collect the users information visited to our site for audit or records for analysis and security.

We can get the value from ServerVariables collections of key “HTTP_X_FORWARDED_FOR” or “REMOTE_ADDR”.

Sometimes our visitors are using either a proxy server or a router and the standard Request.UserHostAddress only finds the IP address of the proxy server or router. When this is the case the user’s IP address is then stored in the server variable (“HTTP_X_FORWARDED_FOR”).

Therefore, we can first try with “HTTP_X_FORWARDED_FOR” and if that is empty we then simply check ServerVariables("REMOTE_ADDR").

Sample Code: C#

public string GetClientIPAddress()
{
    System.Web.HttpContext context = System.Web.HttpContext.Current; 
    string clientIPAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (!string.IsNullOrEmpty(clientIPAddress))
    {
        string[] addresses = clientIPAddress.Split(',');
        if (addresses.Length != 0)
        {
            return addresses[0];
        }
    }

    return context.Request.ServerVariables["REMOTE_ADDR"];
}

Lastly, we get IP and log the the value in to Database or log files.

Kind Regards