共用方式為


網路執行時配置選項

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 屬性