Asp.Net C# ile Kullanıcı IP adresini öğrenme

Aşağıdaki kod size en doğru ip adresini verecektir. "System.Web.HttpContext.Current.Request.UserHostName" her zaman doğru ip adresini vermeyebilir çünkü sunucuda "load balancer" olabilir ya da yönlendirme olabilir. Aşağıdaki kod sırası ile kontrol ederek en doğru ip adresini size iletir.

public string GetClientIp()
{
        var ipAddress = string.Empty;
        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
        {
            ipAddress = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
        }
        else if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"] != null && System.Web.HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"].Length != 0)
        {
            ipAddress = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"];
        }
        else if (System.Web.HttpContext.Current.Request.UserHostAddress.Length != 0)
        {
            ipAddress = System.Web.HttpContext.Current.Request.UserHostName;
        }
        return ipAddress;
}

C#, Aps.NET ve Asp.NET MVC ip öğrenme