UserHostAddress в Core Asp.net

Что является эквивалентом в Asp.Net Core старого HttpContext.Request.UserHostAddress?

Я попытался это. this.ActionContext.HttpContext но не может найти ни UserHostAddress, ни свойства ServerVariables.

Спасибо

Ответ 1

Это изменилось с момента публикации исходного ответа. Получите доступ к нему через

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

Ответ 2

Если у вас есть доступ к HttpContext, вы можете получить локальный/удаленный IpAddress из свойства Connection следующим образом:

var remote = this.HttpContext.Connection.RemoteIpAddress;
var local = this.HttpContext.Connection.LocalIpAddress;

Ответ 3

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();
}

Ответ 4

Для aspnet rc1-update1 я нашел IP (с портом) в заголовке X-Forwarded-For, доступ к которому можно получить с контроллера как HttpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault().