SocketsHttpHandler 類別

定義

提供 .NET Core 2.1 及更新版本中 HttpClient 使用的預設訊息處理常式。

public ref class SocketsHttpHandler sealed : System::Net::Http::HttpMessageHandler
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public sealed class SocketsHttpHandler : System.Net.Http.HttpMessageHandler
public sealed class SocketsHttpHandler : System.Net.Http.HttpMessageHandler
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
type SocketsHttpHandler = class
    inherit HttpMessageHandler
type SocketsHttpHandler = class
    inherit HttpMessageHandler
Public NotInheritable Class SocketsHttpHandler
Inherits HttpMessageHandler
繼承
SocketsHttpHandler
屬性

備註

從 .NET Core 2.1 開始,類別 SocketsHttpHandler 會提供較高層級 HTTP 網路類別所使用的實作,例如 HttpClient 。 使用 SocketsHttpHandler 提供許多優點:

  • 與之前的實作相比,能提供顯著的效能提升。

  • 消除平臺相依性,可簡化部署和服務。 例如, libcurl 不再相依于 macOS 的 .NET Core 和適用于 Linux 的 .NET Core。

  • 所有 .NET 平臺的行為一致。

如果不需要這項變更,而且您位於 .NET Core 2.1-3.1 上,您可以設定應用程式改為使用較舊的 System.Net.Http.HttpClientHandler 類別,以數種方式:

  • AppContext.SetSwitch呼叫 方法,如下所示:

    AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
    
    AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", False)
    
  • .netcore.runtimeconfig.json組態檔中定義 System.Net.Http.UseSocketsHttpHandler 參數:

    "runtimeOptions": {
      "configProperties": {
          "System.Net.Http.UseSocketsHttpHandler": false
      }
    }
    
  • 藉由定義名為 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 的環境變數,並將其設定為 false 或 0。

從 .NET 5 開始,無法使用這些組態選項。

建構函式

SocketsHttpHandler()

建立 SocketsHttpHandler 類別的執行個體。

屬性

ActivityHeadersPropagator

取得或設定傳播分散式追蹤和內容時要使用的傳播器。 使用 null 停用傳播。

AllowAutoRedirect

取得或設定值,這個值指出此處理常式是否應該接在重新導向回應之後。

AutomaticDecompression

取得或設定解壓縮方法的類型,此為 HTTP 內容回應的自動解壓縮處理常式所使用。

ConnectCallback

取得或設定用來開啟新連線的自訂回呼。

ConnectTimeout

取得或設定連線建立逾時前等候的時間長度。

CookieContainer

取得或設定受管理的 Cookie 容器物件。

Credentials

取得或設定這個處理常式所用的驗證資訊。

DefaultProxyCredentials

在使用預設 (系統) Proxy 時,取得或設定用來提交到預設 Proxy 伺服器進行驗證的認證。

EnableMultipleHttp2Connections

取得或設定值,這個值表示當所有現有連線上的並行資料流程都已達到最大數目時,是否可建立連至同一部伺服器的其他 HTTP/2 連線。

Expect100ContinueTimeout

取得或設定伺服器 HTTP 100 Continue 回應的逾時值。

InitialHttp2StreamWindowSize

定義這個 SocketsHttpHandler 所開啟之所有連線的初始 HTTP2 資料流程接收視窗大小。

IsSupported

取得值,這個值表示目前平台是否支援處理常式。

KeepAlivePingDelay

取得或設定 keep alive ping 延遲。

KeepAlivePingPolicy

取得或設定 keep alive ping 行為。

KeepAlivePingTimeout

取得或設定 keep alive ping 逾時。

MaxAutomaticRedirections

取得或設定允許的 HTTP 重新導向的數目上限。

MaxConnectionsPerServer

取得或設定單一伺服器允許的同時 TCP 連線數目上限。

MaxResponseDrainSize

取得或設定可從回應中清空的資料的數量上限 (以位元組為單位)。

MaxResponseHeadersLength

取得或設定回應標頭的最大長度,以 KB (1024 位元組) 為單位。

MeterFactory

取得或設定 IMeterFactory ,以建立 實例的 SocketsHttpHandler 自訂 Meter

PlaintextStreamFilter

取得或設定能提供純文字 HTTP 通訊協定資料流存取的自訂回呼。

PooledConnectionIdleTimeout

取得或設定集區中的連線須閒置多久時間,才會視為可重複使用。

PooledConnectionLifetime

取得或設定連線需在集區中多久時間,才會視為可重複使用。

PreAuthenticate

取得或設定值,這個值指出處理常式是否隨著要求傳送授權標頭。

Properties

取得可寫入字典 (,也就是 HttpClient 要求的自訂屬性對應) 。 字典會初始化為空字典。您可以插入及查詢自訂處理常式和特殊處理的索引鍵/值組。

Proxy

UseProxy 屬性為 true 時,取得或設定自訂 Proxy。

RequestHeaderEncodingSelector

取得或設定回呼,這個回呼會 Encoding 選取 以編碼要求標頭值。

ResponseDrainTimeout

取得或設定要等候資料從回應中清空的時間長度。

ResponseHeaderEncodingSelector

取得或設定回呼,這個回呼會 Encoding 選取 以解碼回應標頭值。

SslOptions

取得或設定一組用於用戶端 TLS 驗證的選項。

UseCookies

取得或設定值,指出此處理常式是否應該使用 Cookie。

UseProxy

取得或設定值,指出處理常式是否應該使用 Proxy。

方法

Dispose()

釋放 Unmanaged 資源,並處置 HttpMessageHandler 所使用的 Managed 資源。

(繼承來源 HttpMessageHandler)
Dispose(Boolean)

釋放 HttpMessageHandler 所使用的 Unmanaged 資源,並選擇性處置 Managed 資源。

(繼承來源 HttpMessageHandler)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
Send(HttpRequestMessage, CancellationToken)

在衍生類別中遭到覆寫時,使用指定的要求和取消語彙基元來傳送 HTTP 要求。 否則,擲回 NotSupportedException

(繼承來源 HttpMessageHandler)
SendAsync(HttpRequestMessage, CancellationToken)

以非同步作業的方式,傳送 HTTP 要求。

(繼承來源 HttpMessageHandler)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於