Questo codice genera un ArgumentOutOfRangeException sull'ultima rigaPerché IPAddress.MapToIPv4() genera ArgumentOutOfRangeException?
var initAddress = IPAddress.Parse("1.65.128.190");
var ipv6Address = initAddress.MapToIPv6();
Assert.IsTrue(ipv6Address.IsIPv4MappedToIPv6);
var ipv4Address = ipv6Address.MapToIPv4();
Qualcuno può spiegare perché MapToIPv6() e MapToIPv4() non sono di andata e ritorno compatibili?
modifica: l'eccezione deriva dal costruttore IPAddress, chiamato da MapToIPv4().
Inoltre, quando la prima linea è
var initAddress = IPAddress.Parse("1.65.128.90");
senza eccezioni sono gettati più
EDIT2: come @Luaan riprodotto questo, ho aggiunto il tag [bug-reporting]. Aggiunto anche [bcl]. Vediamo se qualsiasi personale MS tracce questi tag :)
Edit3: riferito a Collegare https://connect.microsoft.com/VisualStudio/feedback/details/871964
Interessante. Ci sono molti indirizzi IPv4 per i quali funziona bene. Infatti, sulla base di alcuni test ad hoc, sembra che l'ultimo bit sia la colpa - forse c'è un errore da qualche parte nel codice che usa così genericamente i lanci "long", "ulong" e "int' con numeri positivi e negativi . Perché vuoi comunque gli indirizzi IPv4 mappati IPv6? Stai lavorando con i server linux? Pensavo che Windows non li gestisse veramente (dal momento che IPv4 e IPv6 sono driver separati nello stack di rete - sono necessari due socket separati per gestire sia IPv4 che IPv6). – Luaan
Beh, non ne ho davvero bisogno, ma l'ho considerato una piccola vittoria quando si confrontano gli indirizzi. Immagino di essere fortunato che i test del mio codice abbiano effettivamente un indirizzo come questo, per allontanarmi dal mio ottimismo prematuro (non compilato) ... –
@PatrickHuizinga Ah, ho pubblicato anche la segnalazione del bug. Comunque, ho alzato il tuo :) – Luaan