HTTP/2 协议
- 配置是否启用对 HTTP/2 协议的支持。
- 如果省略此设置,则启用对 HTTP/2 协议的支持。 它等效于将值设置为
true。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Http.SocketsHttpHandler.Http2Support |
false - 禁用true - 启用 |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT |
0 - 禁用1 - 启用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
HTTP/3 协议
- 从 .NET 7 开始,默认启用 HTTP/3。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.SocketsHttpHandler.Http3Support |
false -禁用 true - 启用 |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP3SUPPORT |
0 - 禁用1 - 启用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
在 HttpClient 中创建 SPN (.NET 6 及更高版本)
- 当缺少标头且目标未在默认端口上运行时
Host,影响 Kerberos 和 NTLM 身份验证的服务主体名称(SPN)生成。 - 默认情况下,.NET 6 及更高版本不包括 SPN 中的端口。 但是,该行为是可配置的。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Http.UsePortInSpn |
true - 在 SPN 中包含端口号,例如 HTTP/host:portfalse - 不包括 SPN 中的端口,例如 HTTP/host |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN |
1 - 在 SPN 中包含端口号,例如 HTTP/host:port0 - 不包括 SPN 中的端口,例如 HTTP/host |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
HTTP/2 动态窗口缩放
- 配置是否为流控制禁用 HTTP/2 动态窗口缩放算法。 默认情况下,该算法处于启用状态。
- 设置为
true时,将禁用动态窗口缩放算法。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.SocketsHttpHandler.Http2FlowControl.DisableDynamicWindowSizing |
false - 已启用(默认值)true - 禁用 |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2FLOWCONTROL_DISABLEDYNAMICWINDOWSIZING |
0 - 已启用(默认值)1 - 禁用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
HTTP/2 流接收窗口大小
- 配置 HTTP/2 流接收窗口的最大大小。
- 将默认值设为 16 MB。 低于 65,535 的值被固定到 65,535。 没有硬上限,但超出默认值的此设置仅在高吞吐量和高延迟的网络上很有用。
| 设置名称 | 价值观 | |
|---|---|---|
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_MAXSTREAMWINDOWSIZE |
整数(默认值:16 MB;最小值:65,535) |
HTTP/2 流窗口缩放阈值
- 配置乘数,控制 HTTP/2 流接收窗口增长的主动性。 较高的值会导致更保守的窗口增长,从而减少峰值吞吐量。
- 默认值为 1.0。 低于 0 的值将重置为默认值。 没有硬上限,但值远远高于默认每个请求吞吐量的渐进限制。
注释
此设置适用于高级诊断和内部优化。 大多数开发人员不需要更改它。
| 设置名称 | 价值观 | |
|---|---|---|
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_STREAMWINDOWSCALETHRESHOLDMULTIPLIER |
Float (默认值:1.0;最小值:0) |
HTTP 活动传播
配置是否为 HttpClient分布式跟踪活动传播启用 。 启用后,传出 HTTP 请求将传播跟踪上下文标头(例如 traceparent),用于 OpenTelemetry 等分布式跟踪工具。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Http.EnableActivityPropagation |
true - 已启用(默认值)false - 禁用 |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_ENABLEACTIVITYPROPAGATION |
1 - 已启用(默认值)0 - 禁用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
请求完成时挂起的连接超时
配置超时(以毫秒为单位),以便在其发起的 HTTP 请求完成后完成挂起的连接尝试。 请求完成后仍建立连接时,此超时确定放弃连接尝试之前等待的时间。
- 默认值为
5000(5 秒)。 - 设置为
-1无限期等待,直到连接完成。 -
0设置为在请求完成时立即取消挂起的连接。 - 没有硬上限,但非常大的值是不切实际的。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.SocketsHttpHandler.PendingConnectionTimeoutOnRequestCompletion |
整数(默认值: 5000) |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_PENDINGCONNECTIONTIMEOUTONREQUESTCOMPLETION |
整数(默认值: 5000) |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
代理预身份验证
启用后, SocketsHttpHandler 在第一个请求上主动发送 Basic 代理身份验证凭据,而不是等待 407 代理发出的质询响应。 这对于不发送 407 质询响应的代理非常有用。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Http.SocketsHttpHandler.ProxyPreAuthenticate |
false - 已禁用(默认值)true - 启用 |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_PROXYPREAUTHENTICATE |
0 - 已禁用(默认值)1 - 启用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
每个服务器的最大连接数
配置同时打开到单个服务器的 TCP 连接 SocketsHttpHandler 的最大数目。 处理程序忽略小于 1 和使用默认值的值。
- 默认为无限制(
int.MaxValue)。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.SocketsHttpHandler.MaxConnectionsPerServer |
整数(默认值:无限制) |
| 环境变量 | DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_MAXCONNECTIONSPERSERVER |
整数(默认值:无限制) |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
套接字内联完成
配置是否允许在事件线程上运行套接字延续,而不是被调度到该 System.Threading.ThreadPool线程。 在某些情况下,启用此设置可以提高性能。 但是,如果消耗大量工作将 I/O 线程保留的时间超过所需时间,则可能会降低性能。
注释
测试以确保启用此设置有助于特定方案中的性能。
| 设置名称 | 价值观 | |
|---|---|---|
| 环境变量 | DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS |
0 - 已禁用(默认值)1 - 启用 |
套接字线程计数
配置用于套接字 I/O 的线程数。 如果未重写,则根据处理器计数和体系结构计算该值。 实际值在范围内 [1, ProcessorCount]。 此范围之外的值不会被拒绝,但不太可能提高性能。
注释
此设置适用于极端负载方案。 大多数开发人员不需要更改它。
| 设置名称 | 价值观 | |
|---|---|---|
| 环境变量 | DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT |
整数 |
IPv6
配置是否禁用 Internet 协议版本 6(IPv6)。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.DisableIPv6 |
false - 已启用(默认值)true - 禁用 |
| 环境变量 | DOTNET_SYSTEM_NET_DISABLEIPV6 |
0 - 已启用(默认值)1 - 禁用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
TLS 会话恢复
控制 TLS 会话恢复是否禁用 TLS 会话恢复。SslStream 会话恢复允许 TLS 重新连接通过重用以前协商的会话参数来跳过完全握手,从而减少延迟。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Security.DisableTlsResume |
false - 已启用(默认值)true - 禁用 |
| 环境变量 | DOTNET_SYSTEM_NET_SECURITY_DISABLETLSRESUME |
0 - 已启用(默认值)1 - 禁用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
服务器 AIA 下载
启用后,TLS 客户端会自动从服务器证书中的颁发机构信息访问 (AIA) 扩展 URL 下载中间证书。 这样,即使服务器未发送完整链,客户端也能生成完整的证书链。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Security.EnableServerAiaDownloads |
false - 已禁用(默认值)true - 启用 |
| 环境变量 | DOTNET_SYSTEM_NET_SECURITY_ENABLESERVERAIADOWNLOADS |
0 - 已禁用(默认值)1 - 启用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
QUIC 配置缓存
禁用 MsQuic 配置对象的缓存。 启用(默认值)时,系统会跨连接缓存和重用配置对象,从而减少 TLS 和 QUIC 设置的开销,以便使用相同的参数进行重复连接。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Quic.DisableConfigurationCache |
false - 已启用缓存(默认值)true - 缓存已禁用 |
| 环境变量 | DOTNET_SYSTEM_NET_QUIC_DISABLE_CONFIGURATION_CACHE |
0 - 已启用缓存(默认值)1 - 缓存已禁用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
应用本地 MsQuic (Windows)
启用后,QUIC 实现使用应用程序目录中的 MsQuic 库,而不是与 .NET 程序集捆绑的系统提供的库。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.Quic.AppLocalMsQuic |
false - 使用系统 MsQuic (默认值)true - 使用应用本地 MsQuic |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。
HttpListener 内核响应缓冲 (Windows)
启用后, HttpListener 通过 HTTP.sys缓冲内核中的响应数据。 对于使用同步 I/O 或异步 I/O 的应用程序,内核缓冲可以显著改善高延迟连接的吞吐量,同时最多只能进行一次一次未完成的写入。 不要为具有多个并发未完成写入的应用程序启用此设置。
注释
启用内核响应缓冲可能会导致 HTTP.sysCPU 和内存使用率较高。
| 设置名称 | 价值观 | |
|---|---|---|
| runtimeconfig.json | System.Net.HttpListener.EnableKernelResponseBuffering |
false - 已禁用(默认值)true - 启用 |
此配置设置没有特定的 MSBuild 属性。 但是,可以转而添加 MSBuild 项 RuntimeHostConfigurationOption。 将 runtimeconfig.json 设置名称用作 特性的值。Include 如需示例,请参阅 MSBuild 属性。