JanardhanSharma Ответов: 1

Как получить IP-адрес сервера, то есть IPv4 сервера в ASP.NET


Я пробовал, как показано ниже, но он возвращает ::1 в качестве IP-адреса после размещения приложения. Но здесь, когда пользователь запрашивает веб-сайт, я хочу знать, запрашивал ли пользователь этот конкретный IP-адрес или нет. Поэтому я хочу получить IPV4-адрес сервера.

Что я уже пробовал:

private String GetIPAddress()   
{
IPServer = string.Empty;   
         IPServer=Convert.ToString(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) != null ? Convert.ToString(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) : string.Empty;

if (string.IsNullOrEmpty(IPServer))
{
IPServer = Request.ServerVariables["REMOTE_ADDR"];
}                      
return IPServer;
}

1 Ответов

Рейтинг:
12

OriginalGriff

IP-адрес сервера статичен - или должен быть статичным-то есть он никогда не меняется. Если это так, то поиск DNS, который преобразует URL-адрес "www.MyDomain.com" чтобы IP-адрес не нашел сайт.
Это сложно, но когда пользователь запрашивает URL-адрес из браузера, происходят следующие вещи:
Браузер запрашивает у ОС IP-адрес сервера.
ОС выполняет поиск DNS и возвращает IP-адрес браузеру.
Браузер создает TCP-соединение с сервером и отправляет hhtp-запрос через TCP-соединение.
Браузер получает HTTP-ответ и обрабатывает его (здесь обрабатываются ошибки авторизации, 404-е и тому подобное)
Браузер отображает ответ в виде страницы.

Все это использует IP-адрес, а не URL-адрес после завершения поиска DNS.

Вы можете получить IP-адрес сервера, это просто: FillInDetails метод, показанный здесь, сделает это с сервера так же легко, как и с клиента: Использование геолокации на основе IP - адресов-и почему это в значительной степени бесполезно.[^]
Но ничего не изменится!


JanardhanSharma

Методы, описанные ниже, решили эту проблему.

https://msdn.microsoft.com/en-us/library/system.net.ipaddress(v=против 110). aspx

Спасибо