Ответ 1
Это изменилось с момента публикации исходного ответа. Получите доступ к нему через
httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress
Что является эквивалентом в Asp.Net Core старого HttpContext.Request.UserHostAddress
?
Я попытался это. this.ActionContext.HttpContext
но не может найти ни UserHostAddress, ни свойства ServerVariables.
Спасибо
Это изменилось с момента публикации исходного ответа. Получите доступ к нему через
httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress
Если у вас есть доступ к HttpContext
, вы можете получить локальный/удаленный IpAddress из свойства Connection
следующим образом:
var remote = this.HttpContext.Connection.RemoteIpAddress;
var local = this.HttpContext.Connection.LocalIpAddress;
HttpRequest.UserHostAddress
дает IP-адрес удаленного клиента. В ASP.NET Core 1.0 вам нужно использовать функцию HTTP-соединения, чтобы получить то же самое. HttpContext
имеет метод GetFeature<T>
, который можно использовать для получения определенной функции. Например, если вы хотите получить удаленный IP-адрес из метода действия контроллера, вы можете сделать что-то вроде этого.
var connectionFeature = Context
.GetFeature<Microsoft.AspNet.HttpFeature.IHttpConnectionFeature>();
if (connectionFeature != null)
{
string ip = connectionFeature.RemoteIpAddress.ToString();
}
Для aspnet rc1-update1 я нашел IP (с портом) в заголовке X-Forwarded-For
, доступ к которому можно получить с контроллера как HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault()
.