Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
ASP0028: prendere in considerazione l'uso
| Valore | |
|---|---|
| ID regola | ASP0028 |
| Categoria | Utilizzo |
| La correzione causa un'interruzione o meno | Senza interruzioni |
Causa
Nel computer server che supporta IPv6, IPv6Any è preferibile a Any perché Any può essere più lento di IPv6Any. In alcuni casi, Any potrebbe non funzionare affatto.
Anypuò essere più lento a causa dell'implementazione dei tipi di sistema sottostanti.
127.0.0.1 è l'indirizzo di loopback IPv4.
::1 è l'indirizzo di loopback IPv6.
Any è l'indirizzo con caratteri jolly per IPv4.
IPv6Any è l'indirizzo universale per IPv6.
Comportamento corrente con IPv6 quando si usa HTTP/1.x o HTTP/2.0:
-
localhostviene risolto in[::1]. -
[::1]non viene accettata dal server, che forza un nuovo tentativo usando127.0.0.1, creando un ciclo ripetuto.
L'uso Any con le condizioni precedenti causa il ASP0028 messaggio di diagnostica. Di seguito è riportato un esempio di codice che può comportare queste condizioni:
.UseKestrel().ConfigureKestrel(options =>
{
options.Listen(IPAddress.Any, ...);
})
Descrizione regola
Il modo consigliato per configurare Kestrel per l'ascolto delle connessioni in ingresso in tutte le interfacce di rete disponibili IPv6 è con IPv6Any.
Come correggere le violazioni
Per il codice problematico, sostituire Any con IPv6Any.
Usare il ListenAnyIP(Int32) metodo senza specificare argomenti:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.ListenAnyIP(...);
})
In alternativa, usare il IPv6Any campo :
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.Listen(IPAddress.IPv6Any, ...);
})
Quando eliminare gli avvisi
Il ASP0028 diagnostico ha livello di gravità Informazioni. Eliminare questo avviso se l'intenzione è disabilitare IPv6 completamente l'utilizzo nel server, anche se in questo caso si rischia i problemi di prestazioni indicati in questo articolo.
IPv6 può essere disabilitato a livello di sistema o solo per .NET tramite l'opzione AppCtx o la variabile di ambiente