Opções de configuração de tempo de execução para sistema de rede

Protocolo HTTP/2

  • Configura se o suporte a protocolo HTTP/2 está habilitado.

  • Introduzido no .NET Core 3.0.

  • Somente .NET Core 3.0: se você omitir essa configuração, o suporte para o protocolo HTTP/2 será desabilitado. Isso é equivalente a definir o valor como false.

  • .NET Core 3.1 e .NET 5+: se você omitir essa configuração, o suporte para o protocolo HTTP/2 será habilitado. Isso é equivalente a definir o valor como true.

Nome da configuração Valores
runtimeconfig.json System.Net.Http.SocketsHttpHandler.Http2Support false -desabilitado
true – Habilitado
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT 0 -desabilitado
1 – Habilitado

Criação de SPN em HttpClient (.NET 6 e posterior)

  • Afeta a geração de SPN (nome da entidade de serviço) para a autenticação Kerberos e NTLM quando o cabeçalho Host está ausente e o destino não está em execução na porta padrão.
  • O .NET Core 2.x e o 3.x não incluem a porta no SPN.
  • O .NET Core 5.x inclui a porta no SPN
  • O .NET 6 e as versões posteriores não incluem a porta, mas o comportamento é configurável.
Nome da configuração Valores
runtimeconfig.json System.Net.Http.UsePortInSpn true – Inclui o número da porta no SPN, por exemplo, HTTP/host:port
false – Não inclui a porta no SPN, por exemplo, HTTP/host
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN 1 – Inclui o número da porta no SPN, por exemplo, HTTP/host:port
0 – Não inclui a porta no SPN, por exemplo, HTTP/host

UseSocketsHttpHandler (somente .NET Core 2.1 – 3.1)

Nome da configuração Valores
runtimeconfig.json System.Net.Http.UseSocketsHttpHandler true – Habilita o uso de SocketsHttpHandler
false – Habilita o uso de WinHttpHandler no Windows ou de libcurl no Linux
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 1 – Habilita o uso de SocketsHttpHandler
0 – Habilita o uso de WinHttpHandler no Windows ou de libcurl no Linux

Observação

Do .NET 5 em diante, a configuração System.Net.Http.UseSocketsHttpHandler não está mais disponível.

Cabeçalhos Latin1 (somente .NET Core 3.1)

  • Essa opção permite relaxar a validação de cabeçalho HTTP, permitindo que SocketsHttpHandler envie caracteres codificados ISO-8859-1 (Latin-1) em cabeçalhos.

  • Se você omitir essa configuração, uma tentativa de enviar um caractere não ASCII resultará em HttpRequestException. Isso é equivalente a definir o valor como false.

Nome da configuração Valores
runtimeconfig.json System.Net.Http.SocketsHttpHandler.AllowLatin1Headers false -desabilitado
true – Habilitado
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_ALLOWLATIN1HEADERS 0 -desabilitado
1 – Habilitado

Observação

Essa opção só está disponível no .NET Core 3.1 desde a versão 3.1.9 e não em versões anteriores nem posteriores. No .NET 5, é recomendável usar RequestHeaderEncodingSelector.