Параметры конфигурации времени выполнения для сети

Протокол HTTP/2

  • Указывает, включена ли поддержка протокола HTTP/2.

  • Представлено в .NET Core 3.0.

  • Только для .NET Core 3.0 Если этот параметр не задан, поддержка протокола HTTP/2 будет отключена. Это эквивалентно присвоению значения false.

  • Для .NET Core 3.1 и .NET 5 и более поздних версий Если этот параметр не задан, поддержка протокола HTTP/2 будет включена. Это эквивалентно присвоению значения true.

Имя параметра Значения
runtimeconfig.json System.Net.Http.SocketsHttpHandler.Http2Support false — отключено
true — включено
Переменная среды DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT 0 — отключено
1 — включено

UseSocketsHttpHandler

  • Определяет, использует ли System.Net.Http.HttpClientHandler System.Net.Http.SocketsHttpHandler или более старые стеки протокола HTTP (WinHttpHandler в Windows и CurlHandler — внутренний класс, реализованный на базе libcurl, в Linux).

    Примечание

    Вместо непосредственного создания экземпляра класса HttpClientHandler вы можете использовать высокоуровневые сетевые интерфейсы API. Этот параметр также влияет на то, какой стек протокола HTTP используется высокоуровневыми сетевыми интерфейсами API, включая HttpClient и HttpClientFactory.

  • Если этот параметр не задан, HttpClientHandler будет использовать SocketsHttpHandler. Это эквивалентно присвоению значения true.

  • Этот параметр можно настроить программно, вызвав метод AppContext.SetSwitch.

Имя параметра Значения
runtimeconfig.json System.Net.Http.UseSocketsHttpHandler true — позволяет использовать SocketsHttpHandler
false — позволяет использовать WinHttpHandler в Windows или libcurl в Linux
Переменная среды DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 1 — позволяет использовать SocketsHttpHandler
0 — позволяет использовать WinHttpHandler в Windows или libcurl в Linux

Примечание

Начиная с .NET 5 параметр System.Net.Http.UseSocketsHttpHandler больше недоступен.

Заголовки Latin1 (только в .NET Core 3.1)

  • Этот параметр позволяет сделать проверку заголовков HTTP менее строгой, благодаря чему SocketsHttpHandler может передавать в заголовках символы в кодировке ISO-8859-1 (Latin-1).

  • Если этот параметр не задан, попытка отправки символа не в кодировке ASCII приведет к исключению HttpRequestException. Это эквивалентно присвоению значения false.

Имя параметра Значения
runtimeconfig.json System.Net.Http.SocketsHttpHandler.AllowLatin1Headers false — отключено
true — включено
Переменная среды DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_ALLOWLATIN1HEADERS 0 — отключено
1 — включено

Примечание

Этот параметр доступен только в .NET Core 3.1, начиная с версии 3.1.9, но не в более ранних или поздних версиях. В .NET 5 рекомендуется использовать RequestHeaderEncodingSelector.