SYSLIB0045: Sommige cryptografische factorymethoden zijn verouderd
De volgende System.Security.Cryptography
methoden zijn verouderd, te beginnen in .NET 7. Als u ze in code gebruikt, wordt er een waarschuwing SYSLIB0045
gegenereerd tijdens het compileren. Elk van deze factorymethoden accepteert een tekenreeksargument dat de naam van het algoritme vertegenwoordigt. Met deze methoden wordt het resultaat aangeroepen CryptoConfig.CreateFromName en gecast naar het retourtype.
- Aes.Create(String)
- AsymmetricAlgorithm.Create(String)
- DES.Create(String)
- ECDiffieHellman.Create(String)
- ECDsa.Create(String)
- HashAlgorithm.Create(String)
- KeyedHashAlgorithm.Create(String)
- RandomNumberGenerator.Create(String)
- RC2.Create(String)
- Rijndael.Create(String)
- RSA.Create(String)
- SHA1.Create(String)
- SHA256.Create(String)
- SHA384.Create(String)
- SHA512.Create(String)
- SymmetricAlgorithm.Create(String)
- TripleDES.Create(String)
Deze methoden zijn gemarkeerd [Obsolete]
omdat ze in bijgesneden toepassingen kunnen retourneren wanneer ze niet in niet-ingekorte toepassingen zouden worden geretourneerd null
. In niet-bijgesneden toepassingen worden ook het gedrag op basis van uitzonderingen van deze methoden af en toe verrast bellers en veel bekende id's zijn gekoppeld aan typen die zelf zijn gemarkeerd [Obsolete]
.
Tijdelijke oplossing
Aanroepen die een constante tekenreeks doorgeven, moeten worden gewijzigd in de parameterloze factorymethode of een sterke aanroep om het juiste type te maken. U kunt bijvoorbeeld een aanroep Aes.Create("AES")
vervangen door Aes.Create()
een van beide of new AesCryptoServiceProvider()
. Omdat het AesCryptoServiceProvider type ook is gemarkeerd [Obsolete]
, Aes.Create()
is dit de voorkeursvervanging.
Aanroepen die een niet-constante tekenreeks doorgeven, kunnen hun eigen opzoektabel gebruiken of worden gewijzigd om rechtstreeks aan te roepen CryptoConfig.CreateFromName .
Een waarschuwing onderdrukken
Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.
// Disable the warning.
#pragma warning disable SYSLIB0045
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0045
Als u alle SYSLIB0045
waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn>
eigenschap toe aan het projectbestand.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
</PropertyGroup>
</Project>
Zie Waarschuwingen onderdrukken voor meer informatie.