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.
Serialize a Deserialize metody v BinaryFormatter, Formattera IFormatter jsou nyní zastaralé jako upozornění.
BinaryFormatter Serializace je navíc pro ASP.NET aplikace zakázána ve výchozím nastavení.
Poznámka:
V .NET 7 jsou ovlivněná rozhraní API zastaralá jako chyba. Další informace naleznete v tématu rozhraní API pro serializaci BinaryFormatter vytvářejí chyby kompilátoru.
Změnit popis
Vzhledem k ohrožením zabezpečení jsou BinaryFormatternyní následující metody zastaralé a vytvářejí upozornění v době kompilace s ID SYSLIB0011. Kromě toho v aplikacích ASP.NET Core 5.0 a novějších vyvolá NotSupportedExceptionvýjimku, pokud webová aplikace nemá znovu povolenou BinaryFormatter funkcionalitu.
Následující metody serializace jsou také zastaralé a vytvářejí upozornění SYSLIB0011, ale nemají žádné změny chování:
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Verze byla představena
5,0
Důvod změny
Tyto metody jsou označené zastaralé jako součást úsilí o ukončení využití BinaryFormatter v ekosystému .NET.
Doporučená akce
Přestaňte v kódu používat BinaryFormatter . Místo toho zvažte použití JsonSerializer nebo XmlSerializer. Další informace naleznete v průvodci zabezpečením BinaryFormatter.
Můžete dočasně potlačit BinaryFormatter upozornění v době kompilace, což je
SYSLIB0011. Doporučujeme, abyste před výběrem této možnosti důkladně posoudili rizika vašeho kódu. Nejjednodušším způsobem, jak potlačit upozornění, je obklopit jednotlivé místo volání direktivami#pragma.// Now read the purchase order back from disk using (var readStream = new FileStream("myfile.bin", FileMode.Open)) { var formatter = new BinaryFormatter(); #pragma warning disable SYSLIB0011 return (PurchaseOrder)formatter.Deserialize(readStream); #pragma warning restore SYSLIB0011 }Upozornění v souboru projektu můžete také potlačit.
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <!-- Disable "BinaryFormatter is obsolete" warnings for entire project --> <NoWarn>$(NoWarn);SYSLIB0011</NoWarn> </PropertyGroup>Pokud potlačíte upozornění v souboru projektu, upozornění se potlačí pro všechny soubory kódu v projektu. Potlačení
SYSLIB0011nepotlačí upozornění způsobená použitím jiných zastaralých rozhraní API.Pokud chcete v ASP.NET aplikacích dál používat BinaryFormatter , můžete ho znovu povolit v souboru projektu. Důrazně to ale nedoporučujeme. Další informace naleznete v průvodci zabezpečením BinaryFormatter.
<PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- Warning: Setting the following switch is *NOT* recommended in web apps. --> <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization> </PropertyGroup>
Další informace o doporučených akcích naleznete v Řešení problémů s zastaralostí a zakázáním BinaryFormatter.
Ovlivněná rozhraní API
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize
- System.Runtime.Serialization.Formatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatter.Deserialize(Stream)
- System.Runtime.Serialization.IFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.IFormatter.Deserialize(Stream)