SendFile がコネクションレス ソケットに対して NotSupportedException をスローする
コネクションレス (UDP など) ソケットの SendFile メソッド ファミリの動作がすべてのプラットフォームで一貫するようになりました。 影響を受けるメソッドからは、すべてのプラットフォームで NotSupportedException がスローされるようになりました。
以前の動作
以前は、コネクションレス Socket (UDP など) の場合、次の動作が観察されていました。
- SendFile では、Unix タイプのプラットフォームではなく、Windows で NotSupportedException をスローしました。
- 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
メソッドを使用しないでください。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET