Следующий код работает нормально локально, но он получит только 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-адрес.