Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
ASP0028: Considere usar
| Valor | |
|---|---|
| Código da regra | ASP0028 |
| Categoria | Utilização |
| O ajuste está a dar problemas ou está a funcionar | Sem quebra |
Causa
Na máquina servidor que suporta IPv6, , IPv6Any é preferido a Any porque Any pode ser mais lento do que IPv6Any. Em alguns casos, Any pode não funcionar de todo.
Any pode ser mais lento devido à implementação subjacente de tipos de sistema.
127.0.0.1 é o endereço de loopback do IPv4. O endereço de loopback do IPv6 (Internet Protocol versão 6) é ::1.
Any é o endereço curinga para IPv4.
IPv6Any é o endereço curinga para IPv6.
Comportamento atual com IPv6 ao usar HTTP/1.x ou HTTP/2.0:
-
localhostresolve-se em[::1]. -
[::1]não é aceito pelo servidor, o que força uma nova tentativa usando127.0.0.1, criando um ciclo repetido.
Usar Any com as condições anteriores provoca a mensagem de diagnóstico ASP0028. Aqui está um exemplo do código que pode resultar nessas condições:
.UseKestrel().ConfigureKestrel(options =>
{
options.Listen(IPAddress.Any, ...);
})
Descrição da regra
A maneira recomendada de configurar Kestrel para escutar conexões de entrada em todas as interfaces de rede IPv6 disponíveis é com IPv6Any.
Como corrigir violações
Para o código problemático, substitua Any por IPv6Any.
Use o método ListenAnyIP(Int32) sem especificar nenhum argumento:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.ListenAnyIP(...);
})
Ou use o campo IPv6Any:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.Listen(IPAddress.IPv6Any, ...);
})
Quando suprimir avisos
O diagnóstico ASP0028 tem severidade de nível de informação . Suprima este aviso se a sua intenção for desabilitar completamente o uso do IPv6 no servidor, embora isso implique o risco dos problemas de desempenho mencionados neste artigo.
IPv6 pode ser desabilitado em todo o sistema ou para .NET somente por meio do switch AppCtx ou da variável de ambiente