SerializationFormat.Binary je zastaralé
SerializationFormat.Binary je zastaralý pro DataTable a DataSet. Binární serializace spoléhá na BinaryFormatter, což je nezabezpečené. Pokud v kódu použijete SerializationFormat.Binary , upozornění na obsoletion SYSLIB0038 se vygeneruje v době kompilace.
Kromě toho je vyvolán za běhu, InvalidEnumArgumentException pokud:
- Nastavit DataSet.RemotingFormat nebo DataTable.RemotingFormat nastavit SerializationFormat.Binary.
- Zavolejte jeden z konstruktorů deserializace pro DataTable binární data nebo DataSet s binárními daty.
Předchozí chování
DataTable Dříve a DataSet lze serializovat a deserializovat s jejich RemotingFormat vlastností nastavena na SerializationFormat.Binary, který se použil BinaryFormatter pod kapotou.
Nové chování
Počínaje rozhraním .NET 7, pokud se pokusíte serializovat nebo deserializovat DataTable a s jejich RemotingFormat vlastností nastavenou na SerializationFormat.Binary, je InvalidEnumArgumentException vyvolánaDataSet.
Zavedená verze
.NET 7
Typ zásadní změny
Tato změna může ovlivnit kompatibilitu zdroje a binární kompatibilitu.
Důvod změny
SerializationFormat.Binary se implementuje prostřednictvím BinaryFormatter, která je nezabezpečená a zastaralá v celém zásobníku .NET.
Doporučená akce
Pokud váš kód používá SerializationFormat.Binary, přepněte na použití SerializationFormat.Xml nebo použijte jinou metodu serializace.
V opačném případě můžete přepínač nastavit Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext . Tento přepínač vám umožní povolit používání SerializationFormat.Binarykódu tak, aby fungoval jako předtím. Tento přepínač se ale odebere v .NET 8. Informace o nastavení přepínače naleznete v tématu AppContext pro uživatele knihovny.
Ovlivněná rozhraní API
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)