У меня есть проект .net core 2.0, который пытается получить имя хоста и IP-адрес хоста с Linux-машины.Программа хорошо работает в Mac OS и Windows, но не в Linux - Ubuntu 16.04
public class Program
{
public static void Main(string[] args)
{
var HostName = Dns.GetHostName();
Console.WriteLine("Host name : " + HostName);
var HostAddress = GetHostAddress(HostName);
Console.WriteLine("Host address : " + HostAddress);
}
private static string GetHostAddress(string hostName)
{
try
{
var addressList = Dns.GetHostAddresses(hostName);
foreach (IPAddress address in addressList)
{
Console.WriteLine("IP Address : " + address.ToString());
if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
string ip = address.ToString();
if (!ip.StartsWith("127."))
return ip;
}
}
return "127.0.0.1";
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
Исключение, которое я получил,
ubuntu @ ip-10-40-121-185: ~ / home / IP $ dotnet IP.dll
Имя хоста: ip-10-40-121-185
System.Net.Internals.SocketExceptionFactory + ExtendedSocketException (0x00000005): Нет такогоустройство или адрес
в System.Net.Dns.InternalGetHostByName (строка hostName, логическое значение includeIPv6)
в System.Net.Dns.GetHostAddresses (строка hostNameOrAddress)
в IP.Program.GetHostAddress (String hostName) в /Users/jliu/RiderProjects/IpTest/IP/Program.cs:line 34
Необработанное исключение: System.Net.Internals.SocketExceptionFactory + ExtendedSocketException: нет такого устройства или адреса
в System.Net.Dns.InternalGetHostByName (строка hostName, логическое значение includeIPv6)
в System.Net.Dns.GetHostAddresses (строка hostNameOrAddress)
в IP.Program.GetHostAddress (String hostName) в / Users / jliu / RiderProjects / IpTest / IP / Program.cs: строка 52
в IP.Program.Main (String [] args) в /Users/jliu/RiderProjects/IpTest/IP/Program.cs:line 20 Прервано (ядро сброшено)
Есть идеи, как это исправить или какая-нибудь альтернатива для получения IP на машине с Linux?Спасибо.