Il incorporato .Net metodo System.Net.IPAddress.ToString() si comporta in modo incoerente per gli indirizzi IPv6.Cosa determina la formattazione di indirizzi IPv6 da System.Net.IPAddress.ToString()?
Dato l'array di byte 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
, in alcuni ambienti viene restituito "aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa"
, mentre altri restituiscono "aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:172.172.172.172"
.
Capisco che entrambi siano formati IPv6 validi, ma vorrei essere in grado di spiegare la differenza.
Sembra che gli ambienti più recenti (Windows 7 e Server 2008 R2) abbiano maggiori probabilità di produrre il primo comportamento, quindi ho verificato differenze evidenti come la versione di .Net framework, ma non sono stato in grado di rilevare un pattern.
C'è un modo per selezionare un formato rispetto all'altro o devo codificare questo per ottenere un comportamento coerente?
Codice di ricreare:
byte[] bytes = {0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA};
IPAddress myIP = new IPAddress(bytes);
Console.WriteLine(myIP.ToString());