Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA2022 |
| Titel | Vermijd onnauwkeurig lezen met Stream.Read |
| Categorie | Betrouwbaarheid |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Als waarschuwing |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
Een aanroep naar Stream.Read of Stream.ReadAsync wordt uitgevoerd en de retourwaarde wordt niet gecontroleerd.
Beschrijving van regel
Stream.Read en Stream.ReadAsync kan minder bytes retourneren dan aangevraagd, wat resulteert in onbetrouwbare code als de retourwaarde niet wordt gecontroleerd.
Hoe schendingen op te lossen
Als u een schending wilt oplossen, controleert u de retourwaarde (het totale aantal bytes dat in de buffer is gelezen), of roept u Stream.ReadExactly of Stream.ReadExactlyAsync aan in plaats daarvan.
Voorbeeld
In het volgende codefragment ziet u een schending van CA2022 en de oplossing voor de schending.
void M1(Stream stream, byte[] buffer)
{
// CA2022 violation.
stream.Read(buffer, 0, buffer.Length);
// Fix for the violation.
stream.ReadExactly(buffer);
}
Shared Sub M(stream As Stream, buffer As Byte())
' CA2022 violation.
stream.Read(buffer, 0, buffer.Length)
' Fix for the violation.
stream.ReadExactly(buffer)
End Sub
Wanneer waarschuwingen onderdrukken
U moet waarschuwingen van deze regel niet onderdrukken, omdat uw app vastloopt als u de schendingen niet oplost.