SerializationFormat.Binary är föråldrad
SerializationFormat.Binary är föråldrad för DataTable och DataSet. Binär serialisering förlitar sig på BinaryFormatter, vilket är osäkert. Om du använder SerializationFormat.Binary i koden genereras obsoletionsvarning SYSLIB0038 vid kompileringstillfället.
Dessutom utlöses en InvalidEnumArgumentException vid körning om du:
- Ange DataSet.RemotingFormat eller DataTable.RemotingFormat till SerializationFormat.Binary.
- Anropa någon av deserialiseringskonstruktorerna för DataTable eller DataSet med binära data.
Tidigare beteende
Tidigare och DataTable DataSet kunde serialiseras och deserialiseras med deras RemotingFormat egenskap inställd på SerializationFormat.Binary, som används BinaryFormatter under huven.
Nytt beteende
Från och med .NET 7, om du försöker serialisera eller deserialisera DataTable och DataSet med deras RemotingFormat egenskap inställd på SerializationFormat.Binary, genereras en InvalidEnumArgumentException .
Version introducerad
.NET 7
Typ av icke-bakåtkompatibel ändring
Den här ändringen kan påverka källkompatibilitet och binär kompatibilitet.
Orsak till ändringen
SerializationFormat.Binary implementeras via BinaryFormatter, vilket är osäkert och är föråldrat i hela .NET-stacken.
Rekommenderad åtgärd
Om koden använder SerializationFormat.Binaryväxlar du till att använda SerializationFormat.Xml eller använda en annan serialiseringsmetod.
Annars kan du ställa in växeln Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext . Med den här växeln kan du välja att tillåta användning av SerializationFormat.Binary, så att koden kan fungera som tidigare. Den här växeln tas dock bort i .NET 8. Information om hur du ställer in växeln finns i AppContext för bibliotekskonsumenter.
Berörda API:er
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)