62

What is the equivalent in ASP.NET Core of ASP.NET Framework's HttpContext.Request.UserHostAddress?

I tried this.ActionContext.HttpContext but cannot find the UserHostAddress nor the ServerVariables properties.

1

4 Answers 4

65

If you have access to the HttpContext, you can get the Local/Remote IpAddress from the Connection property like so:

var remote = this.HttpContext.Connection.RemoteIpAddress;
var local = this.HttpContext.Connection.LocalIpAddress;
Sign up to request clarification or add additional context in comments.

Comments

20

This has moved since Badrinarayanan's answer in 2014 was posted. Access it now via

httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress

1 Comment

This is always null for me. (I deploy the website on IIS on a VM)
16

HttpRequest.UserHostAddress gives the IP address of the remote client. In ASP.NET Core 1.0, you have to use the HTTP connection feature to get the same. HttpContext has the GetFeature<T> method that you can use to get a specific feature. As an example, if you want to retrieve the remote IP address from a controller action method, you can do something like this.

var connectionFeature = Context
           .GetFeature<Microsoft.AspNet.HttpFeature.IHttpConnectionFeature>();

if (connectionFeature != null)
{
    string ip = connectionFeature.RemoteIpAddress.ToString();
}

2 Comments

Thank you very much this works, I would have never arrived to this myself. Where I could find a documentation o some reference? I`m also searching the old HttpContext.Request.ServerVariables["X_FORWARDED_FOR"]; Do you know what is the new syntax to this? Thanks!
This appears to not work correctly when running in IIS 8. The IP address returned in the code is different than what IIS outputs in the request log. Any updates to this that would allow it to work properly in IIS?
0

For ASP.NET Core RC1-update1 I found IP (with port) in X-Forwarded-For header, whose value can be accessed from a controller as:

HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault()

1 Comment

This header is typically only present if the request went through a load balancer (or something similar) to add the original address.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.