Я хочу идентифицировать отдельные Azure машины службы приложений, чтобы я мог записывать информацию в базу данных. Я думал, что буду использовать локальный IP-адрес машины, используя функцию ниже, но я получаю пустую строку, возвращенную обратно. Код работает для виртуальных машин, но не для служб приложений. Любые мысли (особенно если они в конечном итоге стоят за балансировщиком нагрузки и запускают идентичный код. (Любая строка в порядке ... это не должен быть IP-адрес)
public static string GetLocalIpAddress()
{
UnicastIPAddressInformation mostSuitableIp = null;
var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (var network in networkInterfaces)
{
if (network.OperationalStatus != OperationalStatus.Up)
continue;
var properties = network.GetIPProperties();
if (properties.GatewayAddresses.Count == 0)
continue;
foreach (var address in properties.UnicastAddresses)
{
if (address.Address.AddressFamily != AddressFamily.InterNetwork)
continue;
if (IPAddress.IsLoopback(address.Address))
continue;
if (!address.IsDnsEligible)
{
if (mostSuitableIp == null)
mostSuitableIp = address;
continue;
}
// The best IP is the IP got from DHCP server
if (address.PrefixOrigin != PrefixOrigin.Dhcp)
{
if (mostSuitableIp == null || !mostSuitableIp.IsDnsEligible)
mostSuitableIp = address;
continue;
}
return address.Address.ToString();
}
}
return mostSuitableIp != null
? mostSuitableIp.Address.ToString()
: "";
}