Element SendFile zgłasza wyjątek NotSupportedException dla gniazd bez połączenia
Zachowanie SendFile rodziny metod dla gniazd bez połączenia (na przykład UDP) jest teraz spójne na wszystkich platformach. Metody , których dotyczy problem , teraz zgłaszają wartość NotSupportedException na wszystkich platformach.
Poprzednie zachowanie
Wcześniej w przypadku połączenia bez Socket połączenia (na przykład UDP) zaobserwowano następujące zachowania:
- SendFile rzucił NotSupportedException w systemie Windows, ale nie na platformach przypominających unix.
- Zwrócony ValueTask element z SendFileAsync elementu przechowywanego SocketException na wszystkich platformach.
- Wywołanie EndSendFile elementu zwróconego IAsyncResult ze BeginSendFile strony rzuciło SocketException na wszystkie platformy.
Nowe zachowanie
Począwszy od platformy .NET 8, w przypadku połączenia bez Socket połączenia (na przykład UDP) obserwowane są następujące zachowania:
- SendFile zgłasza wartość NotSupportedException na wszystkich platformach.
- Zwrócone ValueTask ze SendFileAsync sklepów a NotSupportedException na wszystkich platformach.
- Wywołanie EndSendFile elementu zwróconego IAsyncResult z BeginSendFile rzutu na NotSupportedException wszystkich platformach.
Wprowadzona wersja
.NET 8 RC 1
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Biorąc pod uwagę, że SendFile
jest zwykle używany z dużymi ilościami danych, nie ma sensu używać ich z gniazdami bez połączenia. Ponadto poprzednie zachowanie było niespójne, zgłaszane SocketException
na niektórych platformach, a inne z nieprzewidywalnym wynikiem.
Zalecana akcja
Nie używaj SendFile
metod dla gniazd bez połączenia.