user3179537
user3179537

Reputation: 23

X-Forwarded-For: How can I get the client's IP address in ASP.Net MVC?

I'm totally new to the asp.net mvc stack and i was wondering what happened to the Request.Header object?

Basically what I want to do is to pull out the Device(PC) IP address, but I fail to retrieve the desired output. I also tried Request.ServerVariables object but result always remain NULL.

I am using asp.net MVC. is there any change in this function required:

public static string GetIP()
    {
        string functionReturnValue = null;
        //Gets IP of actual device versus the proxy (WAP Gateway)
        functionReturnValue = HttpContext.Current.Request.Headers["X-FORWARDED-FOR"]; //functionReturnValue = null
        if (string.IsNullOrEmpty(functionReturnValue))
        {
            functionReturnValue = HttpContext.Current.Request.Headers["X-Forwarded-For"];//functionReturnValue = null
            if (string.IsNullOrEmpty(functionReturnValue))
            {
                //If not using a proxy then get the device IP
                // GetIP = Context.Request.ServerVariables("REMOTE_ADDR")
                if (string.IsNullOrEmpty(functionReturnValue))
                {
                    //If not using a proxy then get the device IP
                    functionReturnValue = HttpContext.Current.Request.Headers["X-CLIENT-IP"];//functionReturnValue = null
                    if (string.IsNullOrEmpty(functionReturnValue))
                    {
                        //If not using a proxy then get the device IP
                        functionReturnValue = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];//functionReturnValue = "::1"
                    }
                }
            }
        }

        System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("(\\d{1,3}\\.){3}\\d{0,3}");
        if (functionReturnValue != null)
        {
            if (regex.IsMatch(functionReturnValue))
            {
                functionReturnValue = regex.Match(functionReturnValue).Value.ToString();
            }
            else
            {
                functionReturnValue = "";
            }
            regex = null;
        }

        if (functionReturnValue == null)
        {
            return "";
        }
        else
        {
            return functionReturnValue;
        }
    }

Upvotes: 0

Views: 14144

Answers (1)

Arun kumar
Arun kumar

Reputation: 1625

In X-Forwarded-For you will get client ip,proxy1 & proxy2. By taking first item you will get client/user ip.

HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault()

Hope it helps!

Upvotes: 8

Related Questions