Megosztás:


Windows megjelenítési alaprendszer(WPF) migrálási útmutató a következőhöz:BinaryFormatter

BinaryFormatter eltávolítás

A .NET 9-től kezdve már nem támogatott az ismert biztonsági kockázatok miatt, BinaryFormatter és api-jai mindig minden projekttípushoz, beleértve az alkalmazásokat isPlatformNotSupportedException.WPF A kockázatokról BinaryFormatter és azok eltávolításának okáról a migrálási BinaryFormatter útmutatóban talál további információt.

Az eltávolítás során BinaryFormattervárhatóan sok WPF alkalmazásra lesz hatással, és a .NET 9-es vagy újabb verziójára való migrálás befejezéséhez lépéseket kell végrehajtania.

A BinaryFormatter hatás WPF

A .NET 9 előtt Windows megjelenítési alaprendszer (WPF) az adatok szerializálására és deszerializálására olyan BinaryFormatter forgatókönyvek esetében, mint a vágólap, a húzás és a betöltés/tárolás állapota a Journalban. A .NET 9-től kezdve a WPF Windows Forms az implementáció egy részhalmazát BinaryFormatter használja belsőleg ezekhez a forgatókönyvekhez. Bár BinaryFormatteraz általános célú szerializálásban/deszerializálásban nem lehet kezelni a kockázatokat, olyan intézkedéseket hoztak, amelyek az ilyen nagyon specifikus használati esetekben ismert típusokkal mérsékelik a kockázatokat. Az ismeretlen vagy nem támogatott típusok esetében továbbra is érvényben van egy visszaesés BinaryFormatter , amely a migrálási lépések végrehajtásának elmaradása esetén jelenik meg PlatformNotSupportedException az alkalmazásban.

WPF És a WinForms-alkalmazások a következő típusokat kezelik, valamint az ilyen típusú tömböket és listákat. A vágólap, a húzás és az Avalon-kötés a Naplóban továbbra is működni fog ezekkel a típusokkal anélkül, hogy migrálási lépésekre lenne szükség.

OLE-forgatókönyvek

Az eltávolítás OLE-forgatókönyvekre, például vágólapra és húzással, valamint migrálási útmutatóra gyakorolt hatásával BinaryFormatter kapcsolatos információkért tekintse meg a Windows Forms és Windows megjelenítési alaprendszer BinaryFormatter OLE útmutatását.

Hivatkozhat arra a függvényre, amelyben tartalékként használtuk BinaryFormatter az objektum olvasásához/mentéséhez a következőt: SaveObjectToHandle és ReadObjectFromHandle OLE-forgatókönyvekhez

Naplózás

Abban az esetben, ha egy állapotot kell tárolni vagy betölteni a navigációs előzmények WPFkezelése közben.

A betöltéshez/mentéshez meghívjuk a LoadSubStreams/ SaveSubStreams osztályt.DataStream Ha a használt elem nem része az új implementáció által kezelt know-típusnak, akkor azt fogja használni BinaryFormatter.

Amikor egy fejlesztő a JournalEntryben NavigateGoForwardnavigál a csomópont adatainak betöltése vagy GoBackmentése egy streambe az állapot mentéséhez. Ha az érintett típust a szerializálás/deszerializálás során nem kezelik belsőleg, BinaryFormatter akkor a rendszer azt használja.

Hiv: DataStream.cs

Azok a .NET 9-felhasználók, akik nem tudnak távolról áttelepülni BinaryFormatter , nem támogatott kompatibilitási csomagot telepíthetnek. További információ: BinaryFormatter Migrálási útmutató: Kompatibilitási csomag.

Figyelemfelhívás

BinaryFormatter veszélyes, és nem ajánlott, mivel olyan támadások esetén veszélyezteti az alkalmazások használatát, mint a szolgáltatásmegtagadás (DoS), az információk felfedése vagy a távoli kódfuttatás. A kockázatokkal BinaryFormatter kapcsolatos további információkért lásd a deszerializálási kockázatokat a BinaryFormatter használatban és a kapcsolódó típusokban.

Problémák

Ha váratlan problémákat tapasztal az WPF alkalmazással BinaryFormatter kapcsolatban, jelentsen egy problémát a dotnet/wpf/issues címen, és jelezze, hogy a probléma a BinaryFormatter törlésével kapcsolatos.