SerializationFormat.Binary est obsolète
SerializationFormat.Binary est obsolète pour DataTable et DataSet. La sérialisation binaire s’appuie sur BinaryFormatter, qui n’est pas sécurisé. Si vous utilisez SerializationFormat.Binary dans votre code, l’avertissement d’obsolescence SYSLIB0038 sera généré au moment de la compilation.
Par ailleurs, un InvalidEnumArgumentException est levé au moment de l’exécution si vous :
- Définissez DataSet.RemotingFormat ou DataTable.RemotingFormat sur SerializationFormat.Binary.
- Appelez un des constructeurs de désérialisation pour DataTable ou DataSet avec des données binaires.
Comportement précédent
Auparavant, DataTable et DataSet pouvaient être sérialisés et désérialisés avec leur propriété RemotingFormat définie sur SerializationFormat.Binary, qui utilisait BinaryFormatter de manière cachée.
Nouveau comportement
À compter de .NET 7, si vous tentez de sérialiser ou de désérialiser DataTable et DataSet avec leur propriété RemotingFormat définie sur SerializationFormat.Binary, une exception InvalidEnumArgumentException est levée.
Version introduite
.NET 7
Type de changement cassant
Cette modification peut affecter la compatibilité des sources et la compatibilité binaire.
Raison du changement
SerializationFormat.Binary est implémenté via BinaryFormatter, qui est non sécurisé et obsolète sur l’ensemble de la pile .NET.
Action recommandée
Si votre code utilise SerializationFormat.Binary, utilisez plutôt SerializationFormat.Xml ou une autre méthode de sérialisation.
Sinon, vous pouvez définir le commutateur Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext. Ce commutateur vous permet d’autoriser l’utilisation de SerializationFormat.Binary pour que le code fonctionne comme avant. Toutefois, ce commutateur sera supprimé dans .NET 8. Pour plus d’informations sur la configuration du commutateur, consultez AppContext pour le contrôle serveur consommateur de bibliothèque.
API affectées
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)