Как я могу получить IP-адрес пользователя в C # / asp .net / MVC 5? - PullRequest
0 голосов
/ 09 марта 2020

Следующий код работает нормально локально, но он получит только IP-адрес сервера (если я прав).

try
{
    string externalIP;
    externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/");
    externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
                 .Matches(externalIP)[0].ToString();
    model.IpCreacion = externalIP;
}
catch { }

Я не могу проверить это прямо сейчас, потому что два парня из моего Офис, который может сделать это общедоступным c URL для тестирования на сервере, сегодня не здесь. Код находится в контроллере проекта, поэтому он запускается на сервере каждый раз, когда клиент выполняет приложение, но на самом деле не клиент получает IP-адрес.

Как заставить клиента получить его IP-адрес вместо сервера, выполняющего код, который я только что показал?

Если мне удастся представить эту функциональность в представлении, будет ли она работать так, как я собираюсь?

ОБНОВЛЕНИЕ: Я попробовал другие методы, опубликованные в качестве ответов, например

string ip = System.Web.HttpContext.Current.Request.UserHostAddress;

и

model.IpCreacion = null;
model.IpCreacion = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (string.IsNullOrEmpty(model.IpCreacion))
{
    model.IpCreacion = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}

, но теперь я получаю только ::1 в результате. Чего не было раньше, так как я получал правильный IP-адрес.

Ответы [ 3 ]

0 голосов
/ 09 марта 2020

, если вы хотите получить IP-адрес клиента, посетите следующий пост в stackoverflow Как я могу получить IP-адрес клиента в ASP. NET MVC?

0 голосов
/ 09 марта 2020
Public string GetIp()  
{  
    string ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];  
    if (string.IsNullOrEmpty(ip))  
    {  
       ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];  
    }  
    return ip;  
}  
0 голосов
/ 09 марта 2020

Получает только IP-адрес сервера, поскольку вы отправляете запрос с веб-сервера на checkip.dyndns.org.

Чтобы получить IP-адрес клиента, вам нужно использовать JavaScript и делать то же самое.

$.get('http://checkip.dyndns.org/', function(data) {
    console.log(data); // client IP here.
})

ОБНОВЛЕНО:

Если вам нужен клиентский IP-адрес в ASP. NET Core, вы можете внедрить эту службу

private IHttpContextAccessor _accessor;

и использовать ее как

_accessor.HttpContext.Connection.RemoteIpAddress.ToString()

или в ASP. NET Framework

Public string GetIp()  
{  
    string ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];  
    if (string.IsNullOrEmpty(ip))  
    {  
       ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];  
    }  
    return ip;  
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...