Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
ASP0028: Zvažte použití
| Hodnota | |
|---|---|
| ID pravidla | ASP0028 |
| Kategorie | Využití |
| Oprava je kritická nebo nekritická | Nenarušující |
Příčina
Na serverovém počítači, který podporuje IPv6, je IPv6Any upřednostňován před pro jakékoli použití, protože Any může být pomalejší než IPv6Any. V některých případech Any nemusí vůbec fungovat.
Anymůže být pomalejší kvůli implementaci základních typů systému.
127.0.0.1 je adresa zpětné smyčky IPv4.
::1 je adresa zpětné smyčky IPv6.
Any je zástupný znak pro protokol IPv4.
IPv6Any je zástupný znak pro protokol IPv6.
Aktuální chování s protokolem IPv6 při použití protokolu HTTP/1.x nebo HTTP/2.0:
-
localhostse vyhodnotí jako[::1]. -
[::1]server nepřijímá, což vynutí opakování použití127.0.0.1, vytvoření opakovaného cyklu.
Použití Any s předchozími podmínkami způsobí diagnostickou ASP0028 zprávu. Tady je příklad kódu, který může vést k těmto podmínkám:
.UseKestrel().ConfigureKestrel(options =>
{
options.Listen(IPAddress.Any, ...);
})
Popis pravidla
Doporučený způsob konfigurace Kestrel tak, aby naslouchal pro příchozí připojení na všech dostupných síťových rozhraních IPv6, je s IPv6Any.
Jak opravit porušení
Pro problematický kód nahraďte Any znakem IPv6Any.
Použijte metodu ListenAnyIP(Int32) bez zadání argumentů:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.ListenAnyIP(...);
})
Nebo použijte IPv6Any pole:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.Listen(IPAddress.IPv6Any, ...);
})
Kdy potlačit upozornění
Diagnostika ASP0028 má závažnost úrovně informací . Potlačte toto upozornění, pokud vaším záměrem je úplné zakázání používání IPv6 na serveru, i když tím riskujete problémy s výkonem, které jsou zmíněné v tomto článku.
IPv6 je možné zakázat buď na systémové úrovni, nebo pouze pro .NET prostřednictvím přepínače AppCtx nebo proměnné prostředí