Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W systemie Linux procesy nieuprzywilejowane nie mogą wysyłać nieprzetworzonych pakietów IP.
Ping funkcjonalność jest implementowana poprzez interfejs z narzędziem ping
. Jednak to narzędzie nie obsługuje określania niestandardowego ładunku dla pakietów ping protokołu ICMP (Internet Control Message Protocol). Platforma .NET 7 wprowadza mechanizm sprawdzania takich przypadków i zgłasza wyjątek, jeśli określono niestandardowy pakiet.
Poprzednie zachowanie
W poprzednich wersjach ładunek pakietu ping był ignorowany w trybie dyskretnym (czyli nie został wysłany) w nieuprzywilejowanych procesach systemu Linux.
Nowe zachowanie
Począwszy od .NET 7, wyjątek jest zgłaszany, PlatformNotSupportedException jeśli próbujesz wysłać niestandardowy pakiet ping podczas uruchamiania w nieuprzywilejowanym procesie Linux.
Wersja wprowadzona
.NET 7
Typ zmiany przełamującej
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna zmiany
Lepiej jest zasygnalizować użytkownikowi, że nie można wykonać operacji zamiast dyskretnie upuszczać ładunku.
Zalecana akcja
Jeśli wymagany jest ładunek ping, uruchom aplikację jako root
, lub przyznaj uprawnienie cap_net_raw
przy użyciu narzędzia setcap
.
W przeciwnym razie użyj przeciążenia Ping.SendPingAsync, które nie przyjmuje niestandardowego ładunku lub przekaż pustą tablicę.
Interfejsy API, których dotyczy problem
- 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[])