Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In Linux i processi senza privilegi non possono inviare pacchetti IP non elaborati.
Ping la funzionalità viene implementata interfacciandosi con l'utilità ping
. Tuttavia, questa utilità non supporta la specifica di un payload personalizzato per i pacchetti ping ICMP (Internet Control Message Protocol). .NET 7 aggiunge un controllo per tali casi e genera un'eccezione se viene specificato un payload personalizzato.
Comportamento precedente
Nelle versioni precedenti il payload del pacchetto ping è stato ignorato in modo invisibile all'utente (ovvero non è stato inviato) nei processi Linux senza privilegi.
Nuovo comportamento
A partire da .NET 7, viene generata un'eccezione PlatformNotSupportedException se si tenta di inviare un payload di pacchetto ping personalizzato durante l'esecuzione in un processo Linux senza privilegi.
Versione introdotta
.NET 7
Tipo di cambiamento che interrompe la compatibilità
Questa modifica può influire sulla compatibilità binaria.
Motivo della modifica
È preferibile segnalare all'utente che l'operazione non può essere eseguita invece di eliminare automaticamente il payload.
Azione consigliata
Se è necessario un payload del ping, eseguire l'applicazione come root
, oppure concedere l'autorizzazione cap_net_raw
utilizzando l'utilità setcap
.
In caso contrario, usare un overload di Ping.SendPingAsync che non accetta un payload personalizzato o passare un array vuoto.
Le API interessate
- System.Net.NetworkInformation.Ping.Send(IPAddress, Int32, Byte[], PingOptions)
- System.Net.NetworkInformation.Ping.Send(IPAddress, Int32, Byte[])
- System.Net.NetworkInformation.Ping.Send(String, Int32, Byte[], PingOptions)
- System.Net.NetworkInformation.Ping.Send(String, Int32, Byte[])
- System.Net.NetworkInformation.Ping.SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)
- System.Net.NetworkInformation.Ping.SendAsync(IPAddress, Int32, Byte[], Object)
- System.Net.NetworkInformation.Ping.SendAsync(String, Int32, Byte[], PingOptions, Object)
- System.Net.NetworkInformation.Ping.SendAsync(String, Int32, Byte[], Object)
- System.Net.NetworkInformation.Ping.SendPingAsync(IPAddress, Int32, Byte[], PingOptions)
- System.Net.NetworkInformation.Ping.SendPingAsync(IPAddress, Int32, Byte[])
- System.Net.NetworkInformation.Ping.SendPingAsync(String, Int32, Byte[], PingOptions)
- System.Net.NetworkInformation.Ping.SendPingAsync(String, Int32, Byte[])