Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Serialize
- und Deserialize
-Methoden in BinaryFormatter, Formatter und IFormatter sind jetzt als veraltet gekennzeichnet. Darüber hinaus ist die Serialisierung von BinaryFormatter standardmäßig für ASP.NET-Anwendungen verboten.
Hinweis
In .NET 7 sind die betroffenen APIs als Fehler veraltet. Weitere Informationen finden Sie unter BinaryFormatter Serialization APIs, die Compilerfehler erzeugen.
Änderungsbeschreibung
Aufgrund von Sicherheitsrisiken in BinaryFormattersind die folgenden Methoden nun veraltet und erzeugen eine Kompilierungszeitwarnung mit ID SYSLIB0011
. Darüber hinaus wird NotSupportedException in ASP.NET Core 5.0-Apps (und höher)ausgelöst, es sei denn, BinaryFormatter wurde durch die Web-App wieder aktiviert.
Die folgenden Serialisierungsmethoden sind ebenfalls veraltet und erzeugen Warnungen SYSLIB0011
, weisen jedoch keine Verhaltensänderungen auf:
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
Eingeführte Version
5.0
Grund für Änderung
Diese Methoden werden als veraltet markiert, um die Nutzung von BinaryFormatter innerhalb des .NET-Ökosystems schrittweise einzustellen.
Empfohlene Aktion
Beenden Sie die Verwendung BinaryFormatter in Ihrem Code. Erwägen Sie stattdessen die Verwendung JsonSerializer oder XmlSerializer. Weitere Informationen finden Sie im BinaryFormatter-Sicherheitshandbuch.
Sie können die BinaryFormatter Kompilierungszeitwarnung vorübergehend unterdrücken, was heißt
SYSLIB0011
. Es wird empfohlen, Ihren Code sorgfältig auf Risiken zu bewerten, bevor Sie diese Option auswählen. Die einfachste Möglichkeit, die Warnungen zu unterdrücken, besteht darin, die einzelne Aufrufstelle mit#pragma
-Direktiven zu umgeben.// 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 }
Sie können die Warnung auch in der Projektdatei unterdrücken.
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <!-- Disable "BinaryFormatter is obsolete" warnings for entire project --> <NoWarn>$(NoWarn);SYSLIB0011</NoWarn> </PropertyGroup>
Wenn Sie die Warnung in der Projektdatei unterdrücken, wird die Warnung für alle Codedateien im Projekt unterdrückt.
SYSLIB0011
Die Unterdrückung unterdrückt keine Warnungen, die durch die Verwendung anderer veralteter APIs verursacht werden.Um die Verwendung BinaryFormatter in ASP.NET Apps fortzusetzen, können Sie sie in der Projektdatei erneut aktivieren. Es wird jedoch dringend empfohlen, dies nicht zu tun. Weitere Informationen finden Sie im BinaryFormatter-Sicherheitshandbuch.
<PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- Warning: Setting the following switch is *NOT* recommended in web apps. --> <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization> </PropertyGroup>
Weitere Informationen zu empfohlenen Aktionen finden Sie unter Auflösen von BinärFormatter-Obsoletions- und Deaktivierungsfehlern.
Betroffene APIs
- 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)