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

Протокол HTTP/2

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

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

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

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

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

Этот параметр конфигурации не имеет определенного свойства MSBuild. Однако вместо этого можно добавить RuntimeHostConfigurationOption элемент MSBuild. Используйте имя параметра runtimeconfig.json в качестве значения атрибутаInclude. Пример см. в свойствах MSBuild.

Создание имени субъекта-службы в HttpClient (.NET 6 и более поздние версии)

  • Влияет на создание имен субъектов-служб для проверки подлинности Kerberos и NTLM, если отсутствует заголовок Host и целевой объект работает не на стандартном порте.
  • .NET Core 2.x и 3.x не включают порт в имя субъекта-службы.
  • .NET Core 5.x включает порт в имя субъекта-службы
  • .NET 6 и более поздних версий не включает порт, но позволяет настроить это поведение.
Имя настройки Values
runtimeconfig.json System.Net.Http.UsePortInSpn true — номер порта включается в имя субъекта-службы, например HTTP/host:port
false — порт не включается в имя субъекта-службы, например HTTP/host
Переменная среды DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN 1 — номер порта включается в имя субъекта-службы, например HTTP/host:port
0 — порт не включается в имя субъекта-службы, например HTTP/host

Этот параметр конфигурации не имеет определенного свойства MSBuild. Однако вместо этого можно добавить RuntimeHostConfigurationOption элемент MSBuild. Используйте имя параметра runtimeconfig.json в качестве значения атрибутаInclude. Пример см. в свойствах MSBuild.

UseSocketsHttpHandler (только для .NET Core 2.1–3.1)

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

    Примечание.

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

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

Имя настройки Values
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.

Имя настройки Values
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.