Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 zur Laufzeit eine InvalidEnumArgumentException-Ausnahme ausgelöst, wenn Sie:
- 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 DataTable ausgelöst, wenn Sie versuchen, DataSet und RemotingFormat zu serialisieren oder zu deserialisieren, während deren SerializationFormat.Binary-Eigenschaft auf InvalidEnumArgumentException 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 Switch.System.Data.AllowUnsafeSerializationFormatBinary-Schalter AppContext 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)