Welcome to the navigation

Eu occaecat eiusmod dolor mollit incididunt tempor adipisicing ex duis consequat, labore in cupidatat deserunt est aute ut reprehenderit ipsum excepteur dolore dolor ut anim. Labore irure culpa esse sed elit, nisi fugiat ipsum qui commodo aute proident, sit cupidatat eu nostrud cillum eiusmod aliquip in ut pariatur, veniam, excepteur

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;
            }
        }
    }
}