Partilhar via


Opções de configuração em tempo de execução para redes

Protocolo HTTP/2

  • Configura se o suporte ao protocolo HTTP/2 está ativado.
  • Se omitir esta definição, o suporte para o protocolo HTTP/2 está ativado. Isso equivale a definir o valor como true.
Nome da configuração Valores
runtimeconfig.json System.Net.Http.SocketsHttpHandler.Http2Support false - deficientes
true - ativado
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT 0 - deficientes
1 - ativado

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Protocolo HTTP/3

  • A partir do .NET 7, o HTTP/3 está ativado por defeito.
Nome da configuração Valores
runtimeconfig.json System.Net.SocketsHttpHandler.Http3Support false - Deficientes
true - ativado
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP3SUPPORT 0 - deficientes
1 - ativado

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

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

  • Impacta a geração de nomes principais de serviço (SPN) para Kerberos e autenticação NTLM quando Host falta cabeçalho e o destino não está a correr na porta predefinida.
  • .NET 6 e versões posteriores não incluem a porta no SPN por defeito. No entanto, o comportamento é configurável.
Nome da configuração Valores
runtimeconfig.json System.Net.Http.UsePortInSpn true - incluir o número de porta no SPN, por exemplo, HTTP/host:port
false - não incluir port no SPN, por exemplo, HTTP/host
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN 1 - incluir o número de porta no SPN, por exemplo, HTTP/host:port
0 - não incluir port no SPN, por exemplo, HTTP/host

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Escalonamento dinâmico de janelas HTTP/2

  • Configura se o algoritmo de escalonamento dinâmico de janelas HTTP/2 está desativado para controlo de fluxo. O algoritmo está ativado por defeito.
  • Quando definido para true, o algoritmo de escalonamento dinâmico de janelas é desativado.
Nome da configuração Valores
runtimeconfig.json System.Net.SocketsHttpHandler.Http2FlowControl.DisableDynamicWindowSizing false - ativado (por defeito)
true - deficientes
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2FLOWCONTROL_DISABLEDYNAMICWINDOWSIZING 0 - ativado (por defeito)
1 - deficientes

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Tamanho da janela de receção do fluxo HTTP/2

  • Configura o tamanho máximo da janela de receção do fluxo HTTP/2.
  • O padrão é 16 MB. Valores abaixo de 65.535 são limitados a 65.535. Não existe um limite máximo rígido, mas aumentar esta definição para além do padrão só é benéfico em redes que sejam de alta taxa de débito e alta latência.
Nome da configuração Valores
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_MAXSTREAMWINDOWSIZE Integer (padrão: 16 MB; mínimo: 65.535)

Limiar de escala da janela de fluxo HTTP/2

  • Configura o multiplicador que controla o quão agressivamente cresce a janela de receção do fluxo HTTP/2. Valores mais elevados resultam num crescimento das janelas mais conservador, o que reduz o débito máximo.
  • O padrão é 1.0. Valores abaixo de 0 são redefinidos para o padrão. Não existe um limite superior rígido, mas valores muito acima do padrão limitam progressivamente o débito por pedido.

Observação

Esta configuração destina-se a diagnósticos avançados e afinação interna. A maioria dos programadores não precisa de alterar isso.

Nome da configuração Valores
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_STREAMWINDOWSCALETHRESHOLDMULTIPLIER Flutuar (padrão: 1.0; mínimo: 0)

Propagação de atividade HTTP

Configura se a propagação da atividade de rastreio distribuído está ativada para HttpClient. Quando ativados, os pedidos HTTP de saída propagam cabeçalhos de contexto de rastreio (como traceparent) para ferramentas de rastreamento distribuídas como o OpenTelemetry.

Nome da configuração Valores
runtimeconfig.json System.Net.Http.EnableActivityPropagation true - ativado (por defeito)
false - deficientes
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_ENABLEACTIVITYPROPAGATION 1 - ativado (por defeito)
0 - deficientes

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Tempo de espera de ligação após a conclusão do pedido

Configura o timeout (em milissegundos) para completar uma tentativa de ligação pendente após o seu pedido HTTP iniciado terminar. Quando uma ligação ainda está a ser estabelecida após a conclusão do pedido, este timeout determina quanto tempo esperar antes de abandonar a tentativa de ligação.

  • Por defeito, 5000 (5 segundos).
  • Defina para -1 esperar indefinidamente até a ligação terminar.
  • Defina para 0 cancelar a ligação pendente imediatamente após a conclusão do pedido.
  • Não há um limite superior rígido, mas valores muito altos são impraticáveis.
Nome da configuração Valores
runtimeconfig.json System.Net.SocketsHttpHandler.PendingConnectionTimeoutOnRequestCompletion Integer (padrão: 5000)
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_PENDINGCONNECTIONTIMEOUTONREQUESTCOMPLETION Integer (padrão: 5000)

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Pré-autenticação de proxy

Quando ativado, SocketsHttpHandler envia Basic proativamente credenciais de autenticação do proxy no primeiro pedido, em vez de esperar por uma 407 resposta de desafio do proxy. Isto é útil para proxies que não enviam 407 respostas a desafios.

Nome da configuração Valores
runtimeconfig.json System.Net.Http.SocketsHttpHandler.ProxyPreAuthenticate false - desativado (por defeito)
true - ativado
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_PROXYPREAUTHENTICATE 0 - desativado (por defeito)
1 - ativado

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Ligações máximas por servidor

Configura o número máximo de ligações TCP simultâneas que SocketsHttpHandler se abrem para um único servidor. O handler ignora valores inferiores 1 e usa o padrão.

  • Por defeito é ilimitado (int.MaxValue).
Nome da configuração Valores
runtimeconfig.json System.Net.SocketsHttpHandler.MaxConnectionsPerServer Integer (por defeito: ilimitado)
Variável de ambiente DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_MAXCONNECTIONSPERSERVER Integer (por defeito: ilimitado)

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Completações em linha de soquete

Configura se as continuações de socket podem ser executadas no thread de eventos em vez de serem despachadas para o System.Threading.ThreadPool. Ativar esta configuração pode melhorar o desempenho em alguns cenários. No entanto, pode degradar o desempenho se trabalhos caros manterem a thread de I/O por mais tempo do que o necessário.

Observação

Teste para garantir que ativar esta configuração ajuda no desempenho no seu cenário específico.

Nome da configuração Valores
Variável de ambiente DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS 0 - desativado (por defeito)
1 - ativado

Contagem de roscas do soquete

Configura o número de roscas usadas para a E/S do soquete. Quando não é sobreposto, o valor é calculado com base no número de processadores e na arquitetura. Os valores práticos estão no intervalo [1, ProcessorCount]de . Valores fora deste intervalo não são rejeitados, mas é improvável que melhorem o desempenho.

Observação

Esta definição destina-se a cenários de carga extrema. A maioria dos programadores não precisa de alterar isso.

Nome da configuração Valores
Variável de ambiente DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT Número inteiro

IPv6

Configura se o Protocolo de Internet versão 6 (IPv6) está desativado.

Nome da configuração Valores
runtimeconfig.json System.Net.DisableIPv6 false - ativado (por defeito)
true - deficientes
Variável de ambiente DOTNET_SYSTEM_NET_DISABLEIPV6 0 - ativado (por defeito)
1 - deficientes

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Reinício da sessão TLS

Controlar se a retomada de sessões TLS desativa a retomada de sessões TLS para SslStream. A retomada da sessão permite que as reconexões TLS saltem um handshake completo ao reutilizar parâmetros de sessão previamente negociados, o que reduz a latência.

Nome da configuração Valores
runtimeconfig.json System.Net.Security.DisableTlsResume false - ativado (por defeito)
true - deficientes
Variável de ambiente DOTNET_SYSTEM_NET_SECURITY_DISABLETLSRESUME 0 - ativado (por defeito)
1 - deficientes

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Downloads do AIA do servidor

Quando ativado, o cliente TLS descarrega automaticamente certificados intermédios a partir de URLs de extensão do Authority Information Access (AIA) nos certificados do servidor. Isto permite ao cliente construir uma cadeia de certificados completa mesmo quando o servidor não envia a cadeia completa.

Nome da configuração Valores
runtimeconfig.json System.Net.Security.EnableServerAiaDownloads false - desativado (por defeito)
true - ativado
Variável de ambiente DOTNET_SYSTEM_NET_SECURITY_ENABLESERVERAIADOWNLOADS 0 - desativado (por defeito)
1 - ativado

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Cache de configuração QUIC

Desativa a cache dos objetos de configuração do MsQuic. Quando ativado (por defeito), o sistema armazena em cache e reutiliza objetos de configuração entre ligações, o que reduz a sobrecarga da configuração TLS e QUIC para ligações repetidas com os mesmos parâmetros.

Nome da configuração Valores
runtimeconfig.json System.Net.Quic.DisableConfigurationCache false - cache ativada (por defeito)
true - cache desativado
Variável de ambiente DOTNET_SYSTEM_NET_QUIC_DISABLE_CONFIGURATION_CACHE 0 - cache ativada (por defeito)
1 - cache desativado

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

MsQuic local de aplicação (Windows)

Quando ativada, a implementação do QUIC utiliza a biblioteca MsQuic do diretório da aplicação em vez da biblioteca fornecida pelo sistema, incluída no assembly .NET.

Nome da configuração Valores
runtimeconfig.json System.Net.Quic.AppLocalMsQuic false - usar MsQuic do sistema (por defeito)
true - usar o MsQuic local da aplicação

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.

Buffering de resposta ao kernel HttpListener (Windows)

Quando ativado, armazena HttpListener os dados de resposta no kernel via HTTP.sys. O kernel buffering pode melhorar significativamente o throughput em relação a ligações de alta latência para aplicações que utilizam I/O síncrona ou I/O assíncrona, com no máximo uma escrita pendente de cada vez. Não ative esta configuração para aplicações com múltiplas escritas pendentes em simultâneo.

Observação

Ativar o buffering de resposta do kernel pode resultar numa maior utilização de CPU e memória por HTTP.sys.

Nome da configuração Valores
runtimeconfig.json System.Net.HttpListener.EnableKernelResponseBuffering false - desativado (por defeito)
true - ativado

Esta definição de configuração não tem uma propriedade MSBuild específica. No entanto, você pode adicionar um RuntimeHostConfigurationOption item MSBuild em vez disso. Use o nome da configuração runtimeconfig.json como o valor do Include atributo. Para obter um exemplo, consulte Propriedades do MSBuild.