Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
BinaryFormatter odstranění
Počínaje rozhraním .NET 9 BinaryFormatter se už nepodporuje kvůli známým rizikům zabezpečení a rozhraní API vždy můžou vyvolat PlatformNotSupportedException výjimku pro všechny typy projektů, včetně WPF aplikací. Další informace o rizicích BinaryFormatter a důvodech jeho odebrání najdete v BinaryFormatter průvodci migrací.
Při BinaryFormatterodebrání se očekává, že bude ovlivněno mnoho WPF aplikací a budete muset provést akci k dokončení migrace na .NET 9 nebo novější verzi.
Jak BinaryFormatter ovlivňuje WPF
Před rozhraním .NET 9 se služba Windows Presentation Foundation (WPF) použila BinaryFormatter k serializaci a deserializaci dat pro scénáře, jako je schránka, přetažení a načtení/uložení stavu v deníku. Počínaje rozhraním .NET 9 WPF a model Windows Forms pro tyto scénáře interně používat podmnožinu BinaryFormatter implementace. I když BinaryFormatterrizika nelze řešit při serializaci/deserializaci pro obecné účely, byla přijata opatření ke zmírnění rizik v těchto velmi specifických případech použití se známou sadou typů. BinaryFormatter Náhradní řešení je stále v případě neznámých nebo nepodporovaných typů, což vyvolá PlatformNotSupportedException výjimku, pokud se v aplikaci neprovedou kroky migrace.
WPF Aplikace WinForms zpracovávají následující typy spolu s poli a seznamy těchto typů. Schránka, přetažení a vazba Avalon v deníku budou i nadále fungovat s těmito typy bez nutnosti jakýchkoli kroků migrace.
boolbytechardecimaldoubleintsbytefloat- TimeSpan
- DateTime
uintstringnintnuintlongulongshortushort- PointF
- RectangleF
Scénáře OLE
Informace o odebrání efektů BinaryFormatter mají na scénářích OLE, jako je schránka a přetažení, a pokyny k migraci naleznete v tématu model Windows Forms a Windows Presentation Foundation BinaryFormatter OLE pokyny.
Můžete odkazovat na funkci, ve které jsme použili BinaryFormatter jako záložní pro čtení/uložení objektu pro zpracování: SaveObjectToHandle a ReadObjectFromHandle pro scénáře OLE.
Deníku
V případě, že potřebujeme uložit nebo načíst stav při správě historie navigace v WPF.
K načtení/uložení voláme LoadSubStreams/ SaveSubStreamsDataStream třídy. Pokud prvek použitý v části know type zpracovávaný novou implementací, použije BinaryFormatter.
Když vývojář přejde přes JournalEntry pomocí Navigate, GoForwardnebo GoBack, data uzlu se načtou nebo uloží do datového proudu, aby se uložil stav. Pokud se zadaný typ během serializace nebo deserializace nezpracuje vnitřně, BinaryFormatter použije se.
Referenční informace: DataStream.cs
Alternativní řešení kompatibility (nedoporučuje se)
Uživatelé .NET 9, kteří nemůžou migrovat, BinaryFormatter můžou nainstalovat nepodporovaný balíček kompatibility. Další informace najdete v BinaryFormatter průvodci migrací: Balíček kompatibility.
Upozornění
BinaryFormatter je nebezpečná a nedoporučuje se, protože vystavuje aplikace riziku útoků, jako je odepření služby (DoS), zpřístupnění informací nebo vzdálené spuštění kódu. Další informace o rizicích BinaryFormatter , které představují, naleznete v tématu Rizika deserializace při použití BinaryFormatter a souvisejících typů.
Problémy
Pokud dojde k neočekávanému chování aplikace WPF týkající se BinaryFormatter, zapište problém na dotnet/wpf/issues a uveďte, že problém souvisí s odebráním BinaryFormatter.