Как получить общедоступный IP-адрес клиента в С# без внешнего API/сервиса
Я пытался использовать этот код. Но не успех.
string ipAddress = Response.HttpContext.Connection.RemoteIpAddress.ToString();
if (ipAddress == "::1")
{
ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1].ToString();
}
Console.WriteLine(ipAddress);
Не DHCP, это просто автоматическое назначение IP-адресов. Вы имеете в виду НАТ.
::1 это локальный хост, и ваш код правильный, но вам нужно запустить свой код на сервере





в ASP.NET следуйте этому методу:
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;
}
в противном случае используйте метод ниже:
Public string GetIp() {
string IPAddress = "";
IPHostEntry Host = default(IPHostEntry);
string Hostname = null;
Hostname = System.Environment.MachineName;
Host = Dns.GetHostEntry(Hostname);
foreach (IPAddress IP in Host.AddressList)
{
if (IP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
IPAddress = Convert.ToString(IP);
}
}
return IPAddress;
}
Пожалуйста, проголосуйте, если вы нашли это полезным.
Если ваш компьютер находится за DHCP, вам необходимо использовать внешний сервис. См. stackoverflow.com/questions/3253701/…