次の方法で共有


BinaryFormatter シリアル化メソッドは古く、ASP.NET アプリでは禁止されています

SerializeDeserialize、および BinaryFormatterFormatterIFormatter のメソッドが古いと見なされ、警告が示されるようになりました。 また、ASP.NET アプリでは、 BinaryFormatter シリアル化は既定で禁止されています。

.NET 7 では、影響を受ける API はエラーとして廃止されています。 詳細については、「 BinaryFormatter シリアル化 API でコンパイラ エラーが発生する」を参照してください。

変更の説明

BinaryFormatterにより、次のメソッドが廃止され、ID SYSLIB0011を含むコンパイル時の警告が生成されるようになりました。 さらに、ASP.NET Core 5.0 以降のアプリでは、Web アプリがNotSupportedException機能を再び有効にしない限り、BinaryFormatterを投げます。

次のシリアル化メソッドも廃止され、警告 SYSLIB0011が生成されますが、動作は変更されません。

導入されたバージョン

5.0

変更の理由

これらのメソッドは、.NET エコシステム内での BinaryFormatter の使用を縮小する取り組みの一環として、古い形式としてマークされています。

  • コードでの BinaryFormatter の使用を停止します。 代わりに、 JsonSerializer または XmlSerializerの使用を検討してください。 詳細については、「 BinaryFormatter セキュリティ ガイド」を参照してください。

  • BinaryFormatterコンパイル時の警告SYSLIB0011を一時的に抑制できます。 このオプションを選択する前に、コードのリスクを十分に評価することをお勧めします。 警告を抑制する最も簡単な方法は、個々の呼び出しサイトを #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
    }
    

    プロジェクト ファイル内の警告を抑制することもできます。

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Disable "BinaryFormatter is obsolete" warnings for entire project -->
      <NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
    </PropertyGroup>
    

    プロジェクト ファイル内の警告を抑制すると、プロジェクト内のすべてのコード ファイルに対する警告は抑制されます。 SYSLIB0011を抑制しても、他の古い API を使用して発生する警告は抑制されません。

  • ASP.NET アプリで BinaryFormatter を引き続き使用するには、プロジェクト ファイルで再度有効にします。 ただし、これを行わないことを強くお勧めします。 詳細については、「 BinaryFormatter セキュリティ ガイド」を参照してください。

    <PropertyGroup>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Warning: Setting the following switch is *NOT* recommended in web apps. -->
      <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
    </PropertyGroup>
    

推奨されるアクションの詳細については、「 BinaryFormatter の非推奨化と無効化のエラーの解決」を参照してください。

影響を受ける API

こちらも参照ください