Sdílet prostřednictvím


Průvodce migrací služby Windows Presentation Foundation(WPF) pro BinaryFormatter

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.

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/ SaveSubStreams DataStream 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

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 u aplikace WPF dochází k neočekávanému chování souvisejícímu s BinaryFormatteraplikací, zapište problém na adrese dotnet/wpf/issues a uveďte, že problém souvisí s odebráním BinaryFormatter.