Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ASP0028: Överväg att använda
| Värde | |
|---|---|
| Regel-ID | ASP0028 |
| kategori | Användning |
| Korrigeringen är brytande eller icke-brytande | Ej brytande |
Orsak
På serverdatorn som stöder IPv6föredras IPv6Any framför Any eftersom Any kan vara långsammare än IPv6Any. I vissa fall kanske Any inte fungerar alls.
Any kan vara långsammare på grund av implementeringen av underliggande systemtyper.
127.0.0.1 är IPv4-loopback-adressen.
::1 är IPv6-loopback-adressen.
Any är jokertecknets adress för IPv4.
IPv6Any är jokertecknets adress för IPv6.
Aktuellt beteende med IPv6 när du använder HTTP/1.x eller HTTP/2.0:
-
localhostresulterar i[::1]. -
[::1]accepteras inte av servern, vilket tvingar fram ett nytt försök med127.0.0.1, vilket skapar en upprepad cykel.
Om du använder Any med de föregående villkoren leder det till diagnostikmeddelandet ASP0028. Här är ett exempel på koden som kan resultera i följande villkor:
.UseKestrel().ConfigureKestrel(options =>
{
options.Listen(IPAddress.Any, ...);
})
Regelbeskrivning
Det rekommenderade sättet för att konfigurera Kestrel så att det lyssnar på inkommande anslutningar på alla tillgängliga IPv6 nätverksgränssnitt är med IPv6Any.
Så här åtgärdar du överträdelser
För den problematiska koden ersätter du Any med IPv6Any.
Använd metoden ListenAnyIP(Int32) utan att ange några argument:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.ListenAnyIP(...);
})
Eller använd fältet IPv6Any:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.Listen(IPAddress.IPv6Any, ...);
})
När du ska ignorera varningar
Diagnostiken för ASP0028 har allvarlighetsnivå: Information. Ignorera den här varningen om din avsikt är att inaktivera IPv6 användning helt på servern, även om det riskerar de prestandaproblem som nämns i den här artikeln.
IPv6 kan inaktiveras antingen systemomfattande eller endast för .NET via AppCtx-växeln eller miljövariabeln
ASP.NET Core