13

I would like to capture the IP Address of the client that calls my Web API service. I am trying to capture that IP address in a custom Authentication Filter that I have created.

Is the request IP address available from the HttpActionContext ?

I cannot seem to find it.

Is the Authentication Filter the wrong place where to capture the IP address of the client making the request ?

G-Man
  • 7,232
  • 18
  • 72
  • 100

1 Answers1

33

I recently found the following extension method for that:

public static string GetClientIpAddress(this HttpRequestMessage request)
{
    if (request.Properties.ContainsKey("MS_HttpContext"))
    {
        return IPAddress.Parse(((HttpContextBase)request.Properties["MS_HttpContext"]).Request.UserHostAddress).ToString();
    }
    if (request.Properties.ContainsKey("MS_OwinContext"))
    {
        return IPAddress.Parse(((OwinContext)request.Properties["MS_OwinContext"]).Request.RemoteIpAddress).ToString();
    }
    return null;
}

You can now call:

HttpActionContext.Request.GetClientIpAddress();
Alexandru Marculescu
  • 5,569
  • 6
  • 34
  • 50
MichaelS
  • 3,809
  • 2
  • 26
  • 33