SendFile 对于无连接套接字引发 NotSupportedException
无连接(例如 UDP)套接字的 SendFile 方法系列的行为现在在所有平台上都是一致的。 受影响的方法现在会在所有平台上引发 NotSupportedException。
旧行为
以前,对于无连接 Socket(例如 UDP),会观察到以下行为:
- SendFile 在 Windows 上会引发 NotSupportedException,但在类似 Unix 的平台上不会引发。
- 从 SendFileAsync 返回的 ValueTask 在所有平台上存储 SocketException。
- 针对从 BeginSendFile 返回的 IAsyncResult 调用 EndSendFile 会在所有平台上引发 SocketException。
新行为
从 .NET 8 开始,对于无连接 Socket(例如 UDP),会观察到以下行为:
- SendFile 会在所有平台上引发 NotSupportedException。
- 从 SendFileAsync 返回的 ValueTask 会在所有平台上存储 NotSupportedException。
- 针对从 BeginSendFile 返回的 IAsyncResult 调用 EndSendFile 会在所有平台上引发 NotSupportedException。
引入的版本
.NET 8 RC 1
中断性变更的类型
此更改为行为更改。
更改原因
考虑到 SendFile
通常与大量数据一起使用,因此将它与无连接套接字一起使用没有意义。 此外,之前的行为存在不一致,在某些平台上会引发 SocketException
,而在其他平台上则是成功的,结果不可预测。
建议的操作
请勿对无连接套接字使用 SendFile
方法。