Welcome to the navigation

Eiusmod reprehenderit ad sunt nisi labore quis in ea aute consectetur sit do cillum veniam, esse laboris voluptate dolor cupidatat magna deserunt exercitation lorem ex. Dolor in pariatur, proident, fugiat officia minim mollit commodo deserunt anim eu labore laborum, voluptate aute consequat, ut adipisicing in ea irure velit aliqua, est

Yeah, this will be replaced... But please enjoy the search!

Getting the Client IP via ASP.NET Web API

Categories Tags

I've seen some questions around the web regarding this, this version will return a string with the client IP. If it returns ::1 that means the client is requesting from the same computer as where the API is running. The query address will be something like http://yoursite/api/ip depending on your routing.

using System.Net.Http;
using System.ServiceModel.Channels;
using System.Web;
using System.Web.Http;
 
namespace Trikks.Controllers.Api
{
    public class IpController : ApiController
    {
        public string GetIp()
        {
            return GetClientIp();
        }
 
        private string GetClientIp(HttpRequestMessage request = null)
        {
            request = request ?? Request;
 
            if (request.Properties.ContainsKey("MS_HttpContext"))
            {
                return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
            }
            else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
            {
                RemoteEndpointMessageProperty prop = (RemoteEndpointMessageProperty)this.Request.Properties[RemoteEndpointMessageProperty.Name];
                return prop.Address;
            }
            else if (HttpContext.Current != null)
            {
                return HttpContext.Current.Request.UserHostAddress;
            }
            else
            {
                return null;
            }
        }
    }
}