Runtime configuration options for networking
HTTP/2 protocol
Configures whether support for the HTTP/2 protocol is enabled.
Introduced in .NET Core 3.0.
.NET Core 3.0 only: If you omit this setting, support for the HTTP/2 protocol is disabled. This is equivalent to setting the value to
false
..NET Core 3.1 and .NET 5+: If you omit this setting, support for the HTTP/2 protocol is enabled. This is equivalent to setting the value to
true
.
Setting name | Values | |
---|---|---|
runtimeconfig.json | System.Net.Http.SocketsHttpHandler.Http2Support |
false - disabledtrue - enabled |
Environment variable | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT |
0 - disabled1 - enabled |
This configuration setting doesn't have a specific MSBuild property. However, you can add a RuntimeHostConfigurationOption
MSBuild item instead. Use the runtimeconfig.json setting name as the value of the Include
attribute. For an example, see MSBuild properties.
SPN creation in HttpClient (.NET 6 and later)
- Impacts generation of service principal names (SPN) for Kerberos and NTLM authentication when
Host
header is missing and target is not running on default port. - .NET Core 2.x and 3.x do not include port in SPN.
- .NET Core 5.x does include port in SPN
- .NET 6 and later versions don't include the port, but the behavior is configurable.
Setting name | Values | |
---|---|---|
runtimeconfig.json | System.Net.Http.UsePortInSpn |
true - includes port number in SPN, for example, HTTP/host:port false - does not include port in SPN, for example, HTTP/host |
Environment variable | DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN |
1 - includes port number in SPN, for example, HTTP/host:port 0 - does not include port in SPN, for example, HTTP/host |
This configuration setting doesn't have a specific MSBuild property. However, you can add a RuntimeHostConfigurationOption
MSBuild item instead. Use the runtimeconfig.json setting name as the value of the Include
attribute. For an example, see MSBuild properties.
UseSocketsHttpHandler (.NET Core 2.1-3.1 only)
Configures whether System.Net.Http.HttpClientHandler uses System.Net.Http.SocketsHttpHandler or older HTTP protocol stacks (WinHttpHandler on Windows and
CurlHandler
, an internal class implemented on top of libcurl, on Linux).Note
You may be using high-level networking APIs instead of directly instantiating the HttpClientHandler class. This setting also affects which HTTP protocol stack is used by high-level networking APIs, including HttpClient and HttpClientFactory.
If you omit this setting, HttpClientHandler uses SocketsHttpHandler. This is equivalent to setting the value to
true
.
Setting name | Values | |
---|---|---|
runtimeconfig.json | System.Net.Http.UseSocketsHttpHandler |
true - enables the use of SocketsHttpHandlerfalse - enables the use of WinHttpHandler on Windows or libcurl on Linux |
Environment variable | DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER |
1 - enables the use of SocketsHttpHandler0 - enables the use of WinHttpHandler on Windows or libcurl on Linux |
Note
Starting in .NET 5, the System.Net.Http.UseSocketsHttpHandler
setting is no longer available.
Latin1 headers (.NET Core 3.1 only)
This switch allows relaxing the HTTP header validation, enabling SocketsHttpHandler to send ISO-8859-1 (Latin-1) encoded characters in headers.
If you omit this setting, an attempt to send a non-ASCII character will result in HttpRequestException. This is equivalent to setting the value to
false
.
Setting name | Values | |
---|---|---|
runtimeconfig.json | System.Net.Http.SocketsHttpHandler.AllowLatin1Headers |
false - disabledtrue - enabled |
Environment variable | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_ALLOWLATIN1HEADERS |
0 - disabled1 - enabled |
Note
This option is only available in .NET Core 3.1 since version 3.1.9, and not in previous or later versions. In .NET 5 we recommend using RequestHeaderEncodingSelector.
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for