„SendFile“ löst für verbindungslose Sockets „NotSupportedException“ aus
Das Verhalten der SendFile-Methodenfamilie für verbindungslose (z. B. UDP)-Sockets ist jetzt auf allen Plattformen konsistent. Die betroffenen Methoden lösten nun NotSupportedException auf allen Plattformen aus.
Vorheriges Verhalten
Zuvor wurden für eine verbindungsloses Socket (z. B. UDP) die folgenden Verhaltensweisen beobachtet:
- SendFile löste einen NotSupportedException auf Windows aus, aber nicht auf Unix-ähnlichen Plattformen.
- Die von SendFileAsync zurückgegebene ValueTask speicherte eine SocketException auf allen Plattformen.
- Das Aufrufen von EndSendFile auf einer von BeginSendFile zurückgegebenen IAsyncResult löste einen SocketException auf allen Plattformen aus.
Neues Verhalten
Ab .NET 8 werden für ein verbindungsloses Socket (z. B. UDP) die folgenden Verhaltensweisen beobachtet:
- SendFile löst eine NotSupportedException auf allen Plattformen aus.
- Die von SendFileAsync zurückgegebene ValueTask speicherte eine NotSupportedException auf allen Plattformen.
- Das Aufrufen von EndSendFile auf einer von BeginSendFile zurückgegebenen IAsyncResult löst einen NotSupportedException auf allen Plattformen aus.
Eingeführt in Version
.NET 8 RC 1
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Da SendFile
in der Regel mit großen Datenmengen verwendet wird, ist es nicht sinnvoll, sie mit verbindungslosen Sockets zu verwenden. Darüber hinaus war das vorherige Verhalten inkonsistent, da auf einigen Plattformen SocketException
ausgelöst wurde, während auf anderen ein unvorhersehbares Ergebnis erfolgte.
Empfohlene Maßnahme
Verwenden Sie keine SendFile
-Methoden für verbindungslose Sockets.