網路執行時配置選項

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 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。

在 HttpClient(.NET 6 及更新版本)中建立 SPN

  • 當Host標頭缺失且目標未在預設埠上運行時,會影響 Kerberos 和 NTLM 認證的服務主體名稱(SPN)產生。
  • .NET 6 及更新版本預設不包含該埠。 不過,這種行為是可以自訂的。
設定名稱 價值觀
runtimeconfig.json System.Net.Http.UsePortInSpn true - 在 SPN 中包含埠號,例如, HTTP/host:port
false - 例如,不包含 port 在 SPN, HTTP/host
環境變數 DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN 1 - 在 SPN 中包含埠號,例如, HTTP/host:port
0 - 例如,不包含 port 在 SPN, HTTP/host

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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 浮點數(預設值:1.0;最低值:0)

HTTP 活動傳播

配置是否啟用分散式追蹤活動傳播。HttpClient 啟用後,發出的 HTTP 請求會傳播追蹤上下文標頭(例如 traceparent),用於像 OpenTelemetry 這類分散式追蹤工具。

設定名稱 價值觀
runtimeconfig.json System.Net.Http.EnableActivityPropagation true - 啟用(預設)
false - 已停用
環境變數 DOTNET_SYSTEM_NET_HTTP_ENABLEACTIVITYPROPAGATION 1 - 啟用(預設)
0 - 已停用

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。

請求完成時連線逾時待處理

設定逾時(以毫秒為單位),以完成發起 HTTP 請求後的待連線嘗試。 當請求完成後連線仍在建立時,這個逾時決定了在放棄連線嘗試前等待多久。

  • 預設為 5000 (5秒)。
  • 設定為 -1 無限期等待直到連線完成。
  • 設定為 , 0 請求完成後立即取消待處理的連線。
  • 沒有硬性上限,但非常大的數值不切實際。
設定名稱 價值觀
runtimeconfig.json System.Net.SocketsHttpHandler.PendingConnectionTimeoutOnRequestCompletion 整數(預設: 5000)
環境變數 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_PENDINGCONNECTIONTIMEOUTONREQUESTCOMPLETION 整數(預設: 5000)

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。

每台伺服器的最大連線數

設定同時開放至單一伺服器的最大TCP連線 SocketsHttpHandler 數量。 處理器忽略的值少 1 於 ,並使用預設值。

  • 預設為無限(int.MaxValue)。
設定名稱 價值觀
runtimeconfig.json System.Net.SocketsHttpHandler.MaxConnectionsPerServer 整數(預設:無限)
環境變數 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_MAXCONNECTIONSPERSERVER 整數(預設:無限)

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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

設定是否停用網際網路協定版本 6(IPv6)。

設定名稱 價值觀
runtimeconfig.json System.Net.DisableIPv6 false - 啟用(預設)
true - 已停用
環境變數 DOTNET_SYSTEM_NET_DISABLEIPV6 0 - 啟用(預設)
1 - 已停用

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。

伺服器 AIA 下載

啟用後,TLS 用戶端會自動從伺服器憑證中的權威資訊存取(AIA)擴充 URL 下載中間憑證。 這讓客戶端即使伺服器沒有傳送完整憑證鏈,也能建立完整的憑證鏈。

設定名稱 價值觀
runtimeconfig.json System.Net.Security.EnableServerAiaDownloads false - 預設為停用
true - 已啟用
環境變數 DOTNET_SYSTEM_NET_SECURITY_ENABLESERVERAIADOWNLOADS 0 - 預設為停用
1 - 已啟用

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 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 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。

App-local MsQuic(Windows)

啟用後,QUIC 實作會使用應用程式目錄中的 MsQuic 函式庫,而非隨 .NET 組合包附帶的系統函式庫。

設定名稱 價值觀
runtimeconfig.json System.Net.Quic.AppLocalMsQuic false - 使用系統 MsQuic(預設)
true - 使用 app-local MsQuic

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。

HttpListener 核心回應緩衝區(Windows)

啟用時,透過 HttpListener HTTP.sys緩衝核心中的回應資料。 核心緩衝能顯著提升高延遲連線的吞吐量,適用於使用同步 I/O 或最多一次未完成寫入的非同步 I/O 的應用。 不要啟用這個設定給有多個並行未完成寫入的應用程式。

備註

啟用核心響應緩衝可能導致 CPU 與記憶體使用率提高 HTTP.sys。

設定名稱 價值觀
runtimeconfig.json System.Net.HttpListener.EnableKernelResponseBuffering false - 預設為停用
true - 已啟用

此組態設定沒有特定的 MSBuild 屬性。 不過,您可以改為新增 RuntimeHostConfigurationOption MSBuild 項目。 使用 runtimeconfig.json 設定名稱作為 Include 屬性的值。 如需範例,請參閱 MSBuild 屬性。