SYSLIB0001: UTF-7-kodningen är osäker
UTF-7-kodningen är inte längre i bred användning bland program, och många specifikationer förbjuder nu dess användning i utbyte. Det används också ibland som en attackvektor i program som inte förväntar sig att stöta på UTF-7-kodade data. Microsoft varnar för användning av System.Text.UTF7Encoding eftersom det inte ger felidentifiering.
Därför markeras följande API:er som föråldrade, med början i .NET 5. Användning av dessa API:er genererar en varning SYSLIB0001
vid kompileringstillfället.
- Encoding.UTF7 Egenskapen
- UTF7Encoding Konstruktörer
Provisoriska lösningar
Om du använder Encoding.UTF7 eller UTF7Encoding inom ditt eget protokoll eller filformat:
Växla till att använda Encoding.UTF8 eller UTF8Encoding. UTF-8 är en branschstandard och stöds i stor utsträckning på olika språk, operativsystem och körningsmiljöer. Att använda UTF-8 underlättar framtida underhåll av din kod och gör den mer driftskompatibel med resten av ekosystemet.
Om du jämför en Encoding instans med Encoding.UTF7:
Överväg i stället att utföra en kontroll mot den välkända UTF-7-kodsidan, som är
65000
. Genom att jämföra med kodsidan undviker du varningen och hanterar även vissa gränsfall, till exempel om någon anropadenew UTF7Encoding()
eller underklassade typen.void DoSomething(Encoding enc) { // Don't perform the check this way. // It produces a warning and misses some edge cases. if (enc == Encoding.UTF7) { // Encoding is UTF-7. } // Instead, perform the check this way. if (enc != null && enc.CodePage == 65000) { // Encoding is UTF-7. } }
Ignorera en varning
Om du måste använda föråldrade API:er kan du ignorera varningen i koden eller i projektfilen.
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Om du vill ignorera alla SYSLIB0001
varningar i projektet lägger du till en <NoWarn>
egenskap i projektfilen.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
</PropertyGroup>
</Project>
Mer information finns i Utelämna varningar.