共用方式為


Linux 上的自訂 Ping 承載

在Linux上,非特殊許可權進程無法傳送原始IP封包。 透過與 Ping 公用程式互動來實作 ping 功能。 不過,此公用程式不支援指定因特網控制訊息通訊協定 (ICMP) Ping 封包的自定義承載。 .NET 7 新增了對這類情況的檢查,並在指定自定義承載時擲回例外狀況。

先前的行為

在舊版中,非特殊許可權 Linux 進程上會以無訊息方式忽略 Ping 封包承載(也就是未傳送)。

新行為

從 .NET 7 開始,如果您嘗試在非特權的 Linux 進程中傳送自定義的 Ping 封包負載,則會拋出 PlatformNotSupportedException

推出的版本

.NET 7

破壞性變更的類型

這項變更可能會影響 二進位相容性

變更的原因

最好向使用者發出訊號,指出無法執行作業,而不是以無訊息方式卸除承載。

如果需要傳送 ping 負載,請以 root 的身份執行應用程式,或使用 cap_net_raw 工具授予 setcap 功能。

否則,請使用 不接受自定義承載的 多載 Ping.SendPingAsync ,或傳入空陣列。

受影響的 API