SendFile genererar NotSupportedException för anslutningslösa socketar
Beteendet för metodfamiljen SendFile för anslutningslösa (till exempel UDP)-socketar är nu konsekvent på alla plattformar. De berörda metoderna genererar nu en NotSupportedException på alla plattformar.
Tidigare beteende
Tidigare observerades följande beteenden för en anslutningslös Socket (till exempel UDP):
- SendFile kastade en NotSupportedException på Windows, men inte på Unix-liknande plattformar.
- Returnerade ValueTask från SendFileAsync lagrade a SocketException på alla plattformar.
- Att anropa EndSendFile på en IAsyncResult returnerad från BeginSendFile kastade en SocketException på alla plattformar.
Nytt beteende
Från och med .NET 8, för en anslutningslös Socket (till exempel UDP), observeras följande beteenden:
- SendFile kastar en NotSupportedException på alla plattformar.
- Den ValueTask som returneras från SendFileAsync lagrar en NotSupportedException på alla plattformar.
- Att anropa EndSendFile en IAsyncResult som returneras från BeginSendFile kastar en NotSupportedException på alla plattformar.
Version introducerad
.NET 8 RC 1
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Med tanke på att SendFile
det vanligtvis används med stora mängder data är det inte meningsfullt att använda dem med anslutningslösa socketar. Dessutom var det tidigare beteendet inkonsekvent och kastades SocketException
på vissa plattformar, samtidigt som andra lyckades med ett oförutsägbart resultat.
Rekommenderad åtgärd
Använd inte SendFile
metoder för anslutningslösa socketar.