SerializationFormat.Binary ist veraltet.
SerializationFormat.Binary ist für DataTable und DataSet veraltet. Die binäre Serialisierung basiert auf dem BinaryFormatter, der unsicher ist. Wenn Sie SerializationFormat.Binary in Ihrem Code verwenden, wird zur Kompilierzeit die Veraltungswarnung SYSLIB0038 generiert.
Darüber hinaus wird in den folgenden Situationen zur Laufzeit eine InvalidEnumArgumentException ausgelöst:
- Legen Sie DataSet.RemotingFormat oder DataTable.RemotingFormat auf SerializationFormat.Binary fest.
- Rufen Sie einen der Deserialisierungskonstruktoren für DataTable oder DataSet mit Binärdaten auf.
Vorheriges Verhalten
Zuvor konnten DataTable und DataSet serialisiert und deserialisiert werden, während die RemotingFormat-Eigenschaft auf SerializationFormat.Binary festgelegt war, wodurch im Hintergrund BinaryFormatter verwendet wurde.
Neues Verhalten
Ab .NET 7 wird eine InvalidEnumArgumentException ausgelöst, wenn Sie versuchen, DataTable und DataSet zu serialisieren oder zu deserialisieren, während deren RemotingFormat-Eigenschaft auf SerializationFormat.Binary festgelegt ist.
Eingeführt in Version
.NET 7
Typ des Breaking Changes
Diese Änderung kann sich auf Quellkompatibilität und binäre Kompatibilität auswirken.
Grund für die Änderung
SerializationFormat.Binary wird über BinaryFormatter implementiert, der unsicher und im gesamten .NET-Stapel veraltet ist.
Empfohlene Maßnahme
Wenn SerializationFormat.Binary in Ihrem Code verwendet wird, wechseln Sie zu SerializationFormat.Xml, oder verwenden Sie eine andere Serialisierungsmethode.
Andernfalls können Sie den AppContext-Schalter Switch.System.Data.AllowUnsafeSerializationFormatBinary
festlegen. Mit diesem Schalter können Sie die Verwendung von SerializationFormat.Binary zulassen, damit Code wie zuvor funktioniert. Dieser Schalter wird jedoch in .NET 8 entfernt. Weitere Informationen zum Festlegen des Schalters finden Sie unter AppContext für Bibliotheksconsumer.
Betroffene APIs
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)