What is the equivalent in Asp.Net Core of the old HttpContext.Request.UserHostAddress
?
I tried this.ActionContext.HttpContext
but cannot find the UserHostAddress nor the ServerVariables properties.
Thanks
What is the equivalent in Asp.Net Core of the old HttpContext.Request.UserHostAddress
?
I tried this.ActionContext.HttpContext
but cannot find the UserHostAddress nor the ServerVariables properties.
Thanks
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;
This has moved since the original answer was posted. Access it now via
httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress
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();
}
For aspnet rc1-update1 I found IP(with port) in X-Forwarded-For
header, which's value can be accessed from controller as HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault()
.