SerializationFormat.Binary kullanımdan kaldırıldı
SerializationFormat.Binaryve DataSetiçin DataTable kullanım dışıdır. İkili serileştirme, güvensiz olan öğesine dayanır BinaryFormatter. Kodunuzda kullanırsanız SerializationFormat.Binary , derleme zamanında kullanımdan kaldırılma uyarısı SYSLIB0038 oluşturulur.
Ayrıca, şu durumlarda çalışma zamanında bir InvalidEnumArgumentException oluşturulur:
- veya DataTable.RemotingFormat olarak SerializationFormat.BinaryayarlayınDataSet.RemotingFormat.
- İkili veriler için DataTable veya DataSet ikili verilerle seri durumdan çıkarma oluşturucularından birini çağırın.
Önceki davranış
DataTable Daha önce ve DataSet özelliği arka planda kullanılan BinaryFormatter olarak ayarlanmış SerializationFormat.Binaryşekilde seri hale RemotingFormat getirilip seri durumdan çıkarılabiliyordu.
Yeni davranış
.NET 7'den başlayarak serileştirmeye veya seri durumdan kaldırmaya DataTable çalışırsanız ve DataSet özellikleri RemotingFormat olarak SerializationFormat.Binaryayarlanırsa bir InvalidEnumArgumentException oluşturulur.
Sürüm kullanıma sunulmuştur
.NET 7
Hataya neden olan değişikliğin türü
Bu değişiklik kaynak uyumluluğunu ve ikili uyumluluğu etkileyebilir.
Değişiklik nedeni
SerializationFormat.Binary , güvenli olmayan ve .NET yığınının tamamında gizlenen aracılığıyla BinaryFormatteruygulanır.
Önerilen eylem
Kodunuz kullanıyorsa SerializationFormat.Binarybaşka bir serileştirme yöntemi kullanmaya SerializationFormat.Xml veya kullanmaya geçin.
Aksi takdirde, anahtarı ayarlayabilirsiniz Switch.System.Data.AllowUnsafeSerializationFormatBinary
AppContext . Bu anahtar, kodun daha önce olduğu gibi çalışabilmesi SerializationFormat.Binaryiçin kullanımına izin vermenizi sağlar. Ancak, bu anahtar .NET 8'de kaldırılacaktır. Anahtarı ayarlama hakkında bilgi için bkz . Kitaplık tüketicileri için AppContext.
Etkilenen API’ler
- System.Data.SerializationFormat.Binary
- DataSet.RemotingFormat
- DataTable.RemotingFormat
- DataSet(SerializationInfo, StreamingContext)
- DataSet(SerializationInfo, StreamingContext, Boolean)
- DataTable(SerializationInfo, StreamingContext)