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:portfalse - 例如,不包含 port 在 SPN, HTTP/host |
| 環境變數 | DOTNET_SYSTEM_NET_HTTP_USEPORTINSPN |
1 - 在 SPN 中包含埠號,例如, HTTP/host:port0 - 例如,不包含 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 屬性。