Freigeben über


BinaryFormatter Serialisierungsmethoden sind in ASP.NET Apps veraltet und unzulässig.

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:

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.

  • 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

Siehe auch