SendFile produce NotSupportedException para sockets sin conexión
El comportamiento de la familia de métodosSendFile para sockets sin conexión (por ejemplo, UDP) ahora es coherente en todas las plataformas. Los métodos afectados ahora inician una excepción NotSupportedException en todas las plataformas.
Comportamiento anterior
Anteriormente, para un Socket sin conexión (por ejemplo, UDP), se observaron los siguientes comportamientos:
- SendFile lanzó un NotSupportedException en Windows, pero no en plataformas similares a Unix.
- El ValueTask devuelto de SendFileAsync almacenó un SocketException en todas las plataformas.
- Al llamar a EndSendFile en un IAsyncResult devuelto de BeginSendFile produjo una SocketException en todas las plataformas.
Comportamiento nuevo
A partir de .NET 8, para un Socket sin conexión (por ejemplo, UDP), se observan los siguientes comportamientos:
- SendFile produce una NotSupportedException en todas las plataformas.
- El ValueTask devuelto de SendFileAsync almacena un NotSupportedException en todas las plataformas.
- Al llamar a EndSendFile en un IAsyncResult devuelto de BeginSendFile produce una NotSupportedException en todas las plataformas.
Versión introducida
.NET 8 RC 1
Tipo de cambio importante
Este es un cambio de comportamiento.
Motivo del cambio
Dado que SendFile
normalmente se usa con grandes cantidades de datos, no tiene sentido usarlo con sockets sin conexión. Además, el comportamiento anterior era incoherente, lo que generaba SocketException
en algunas plataformas, al tiempo que se ejecutaba correctamente en otros con un resultado imprevisible.
Acción recomendada
No use métodos SendFile
para sockets sin conexión.