通过


用于网络的运行时配置选项

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:port
false - 不包括 SPN 中的端口,例如 HTTP/host
环境变量 DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN 1 - 在 SPN 中包含端口号,例如 HTTP/host:port
0 - 不包括 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 属性