SerializationFormat.Binary is verouderd
SerializationFormat.Binary is verouderd voor DataTable en DataSet. Binaire serialisatie is afhankelijk van BinaryFormatter, wat onveilig is. Als u in uw code gebruikt SerializationFormat.Binary , wordt er tijdens het compileren waarschuwingswaarschuwing gegenereerd SYSLIB0038 .
Bovendien wordt er tijdens runtime een InvalidEnumArgumentException gegenereerd als u:
- Instellen DataSet.RemotingFormat of DataTable.RemotingFormat op SerializationFormat.Binary.
- Roep een van de deserialisatieconstructors aan voor DataTable of DataSet met binaire gegevens.
Vorig gedrag
Eerder, DataTable en DataSet kon worden geserialiseerd en gedeserialiseerd met hun RemotingFormat eigenschap ingesteld op SerializationFormat.Binary, die onder de motorkap werd gebruikt BinaryFormatter .
Nieuw gedrag
Als u vanaf .NET 7 probeert te serialiseren of deserialiseren DataTable en DataSet de RemotingFormat eigenschap ingesteld SerializationFormat.Binaryop , wordt er een InvalidEnumArgumentException gegenereerd.
Versie geïntroduceerd
.NET 7
Type wijziging die fouten veroorzaken
Deze wijziging kan van invloed zijn op de broncompatibiliteit en binaire compatibiliteit.
Reden voor wijziging
SerializationFormat.Binary wordt geïmplementeerd via BinaryFormatter, wat onveilig is en verouderd is in de gehele .NET-stack.
Aanbevolen actie
Als uw code gebruikmaakt SerializationFormat.Binaryvan, schakelt u over naar SerializationFormat.Xml of gebruikt u een andere serialisatiemethode.
Anders kunt u de Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext schakeloptie instellen. Met deze schakeloptie kunt u ervoor kiezen om het gebruik van SerializationFormat.Binary, zodat code kan werken zoals voorheen. Deze switch wordt echter verwijderd in .NET 8. Zie AppContext voor bibliotheekgebruikers voor informatie over het instellen van de schakeloptie.
Betrokken API's
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)