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().