Skip to content

Instantly share code, notes, and snippets.

@MikeJansen
Created May 10, 2012 14:36
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save MikeJansen/2653453 to your computer and use it in GitHub Desktop.
Save MikeJansen/2653453 to your computer and use it in GitHub Desktop.
HttpRequestMessage.GetClientIpAddress for ASP.NET MVC 4 / Web API
// Original idea: http://stackoverflow.com/questions/9565889/get-the-ip-address-of-the-remote-host
using System.Net.Http;
using System.ServiceModel.Channels;
using System.Web;
namespace CrowSoftware.Api
{
public static class HttpRequestMessageHelper
{
public static string GetClientIpAddress(this HttpRequestMessage request)
{
if (request.Properties.ContainsKey("MS_HttpContext"))
{
return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
}
else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
{
RemoteEndpointMessageProperty prop;
prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];
return prop.Address;
}
else
{
return null;
}
}
}
}
@Ofer-Gal
Copy link

Ofer-Gal commented Oct 9, 2015

UserHostName '((((HttpContextBase)request.Properties["MS_HttpContext"])).Request).UserHostName' threw an exception of type 'System.ArgumentException' string {System.ArgumentException}

@M-Yankov
Copy link

UserHostName '((((HttpContextBase)request.Properties["MS_HttpContext"])).Request).UserHostName' threw an exception of type 'System.ArgumentException' string {System.ArgumentException}

I'm having same problem with Argument exception. It happens when I wrap the code in Task.Run(... )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment