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.
bool
byte
char
decimal
double
int
sbyte
float
- TimeSpan
- DateTime
uint
string
nint
nuint
long
ulong
short
ushort
- 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/ 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
, GoForward
nebo 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 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.