SerializationFormat.Binary jest przestarzały
SerializationFormat.Binary jest przestarzały dla i DataTable DataSet. Serializacja binarna opiera się na BinaryFormatterobiekcie , który jest niepewny. Jeśli używasz SerializationFormat.Binary w kodzie, ostrzeżenie o obsoletionie SYSLIB0038 zostanie wygenerowane w czasie kompilacji.
Ponadto element InvalidEnumArgumentException jest zgłaszany w czasie wykonywania, jeśli:
- Ustaw DataSet.RemotingFormat wartość lub DataTable.RemotingFormat na SerializationFormat.Binary.
- Wywołaj jeden z konstruktorów deserializacji dla DataTable lub DataSet z danymi binarnymi.
Poprzednie zachowanie
DataTable Wcześniej i DataSet można je serializować i deserializować z ich RemotingFormat właściwością ustawioną na SerializationFormat.Binary, która była używana BinaryFormatter pod maską.
Nowe zachowanie
Począwszy od platformy .NET 7, jeśli próbujesz serializować lub deserializować DataTable i DataSet z ich RemotingFormat właściwością ustawioną na SerializationFormat.Binary, jest zgłaszana wartość .InvalidEnumArgumentException
Wprowadzona wersja
.NET 7
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła i zgodność binarną.
Przyczyna wprowadzenia zmiany
SerializationFormat.Binary program jest implementowany za pośrednictwem programu BinaryFormatter, który jest niezabezpieczony i jest przestarzały w całym stosie platformy .NET.
Zalecana akcja
Jeśli kod używa SerializationFormat.Binarymetody , przełącz się do używania SerializationFormat.Xml lub użyj innej metody serializacji.
W przeciwnym razie można ustawić Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext przełącznik. Ten przełącznik pozwala wyrazić zgodę na korzystanie z SerializationFormat.Binaryprogramu , aby kod mógł działać tak jak poprzednio. Jednak ten przełącznik zostanie usunięty na platformie .NET 8. Aby uzyskać informacje na temat ustawiania przełącznika, zobacz AppContext dla użytkowników biblioteki.
Dotyczy interfejsów API
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)