SerializationFormat.Binary è obsoleto
SerializationFormat.Binary è obsoleto per DataTable e DataSet. La serializzazione binaria si basa su BinaryFormatter e ciò non è sicuro. Se si usa SerializationFormat.Binary nel codice, l'avviso di osbolescenza SYSLIB0038 verrà generato in fase di compilazione.
Inoltre, viene generata un'eccezione InvalidEnumArgumentException in fase di esecuzione se:
- Si imposta DataSet.RemotingFormat o DataTable.RemotingFormat su SerializationFormat.Binary.
- Si chiama uno dei costruttori di deserializzazione per DataTable o DataSet con dati binari.
Comportamento precedente
In precedenza, DataTable e DataSet potevano essere serializzati e deserializzati con la relativa proprietà RemotingFormat impostata su SerializationFormat.Binary, che usava BinaryFormatter dietro le quinte.
Nuovo comportamento
A partire da .NET 7, se si tenta di serializzare o deserializzare DataTable e DataSet con la relativa proprietà RemotingFormat impostata su SerializationFormat.Binary, viene generata un'eccezione InvalidEnumArgumentException.
Versione di introduzione
.NET 7
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità dell'origine e sulla compatibilità binaria.
Motivo della modifica
SerializationFormat.Binary viene implementato tramite BinaryFormatter, che non è sicuro e diventerà obsoleto nell'intero stack .NET.
Azione consigliata
Se il codice usa SerializationFormat.Binary, passare all'uso di SerializationFormat.Xml o all'uso di un altro metodo di serializzazione.
In caso contrario, è possibile impostare l'opzione AppContext Switch.System.Data.AllowUnsafeSerializationFormatBinary
. Questa opzione consente di acconsentire esplicitamente all'uso di SerializationFormat.Binary, in modo che il codice possa funzionare come prima. Tuttavia, questa opzione verrà rimossa in .NET 8. Per informazioni sull'impostazione dell'opzione, vedere Consumer di librerie AppContext.
API interessate
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)