PolicyHttpMessageHandler 類別

定義

一種 DelegatingHandler 實作,可執行 Policy 所包圍的要求處理。

public ref class PolicyHttpMessageHandler : System::Net::Http::DelegatingHandler
public class PolicyHttpMessageHandler : System.Net.Http.DelegatingHandler
type PolicyHttpMessageHandler = class
    inherit DelegatingHandler
Public Class PolicyHttpMessageHandler
Inherits DelegatingHandler
繼承
PolicyHttpMessageHandler

備註

此訊息處理程式實作支援使用 Polly 連結庫提供的原則,以進行暫時性錯誤處理和復原。

此處提供的檔著重於搭配 使用 Polly 與 的 IHttpClientFactory指引。 如需 Polly 的授權資訊,請參閱 Polly 專案 及其檔

上的 PollyHttpClientBuilderExtensions 擴充方法設計為方便且正確的方法來建立 PolicyHttpMessageHandler

方法 AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) 支援為任何類型的原則建立 PolicyHttpMessageHandler 。 這包括非響應式原則,例如逾時或快取,不需要先失敗基礎要求。

PolicyHttpMessageHandlerPollyHttpClientBuilderExtensions 便利的方法只接受泛型 IAsyncPolicy`1 。 您可以使用的泛型方法 Policy 建立泛型原則實例,例如 TimeoutAsync``1(System.Int32)

若要調整現有的非泛型 IAsyncPolicy,請使用如下所示的程式代碼:

policy.AsAsyncPolicy<HttpResponseMessage>()

此方法 AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) 是一種建議的便利方法,可針對因為連線失敗或伺服器錯誤而失敗的要求套用原則, (5XX HTTP 狀態代碼) 。 這種方法僅支持響應式原則,例如重試、Circuit-Breaker 或後援。 這個方法僅供方便使用;如果不符合您的需求,建議您視需要建立您自己的原則。

使用重試或逾時等原則時請小心,因為 HttpClient 透過 Timeout提供自己的逾時。 結合重試和逾時時, Timeout 將會作為所有嘗試的逾時;輪詢逾時原則可以在設定順序中的重試原則之後設定,以提供每一次嘗試的逾時。

Polly 提供的所有原則都是設計成在長期使用時有效率。 某些原則,例如 Bulkhead 和 Circuit-Breaker 會維持狀態,且應範圍涵蓋您想要共用 Bulkhead 或 Circuit-Breaker 狀態的呼叫。 在自定義案例中使用原則和訊息處理程式時,請務必確保正確的存留期。 所提供的 PollyHttpClientBuilderExtensions 擴充方法是設計來指派很長的存留期給原則,並確保可在處理程式輪替功能作用中時使用。

如果尚未存在,則會PolicyHttpMessageHandler在執行 之前Policy將內容附加至 HttpRequestMessageContext將會提供給原則,以供在其他訊息處理程式中使用Policy

建構函式

PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>)

建立新的 PolicyHttpMessageHandler

PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>)

建立新的 PolicyHttpMessageHandler

屬性

InnerHandler

取得或設定處理 HTTP 回應訊息的內部處理常式。

(繼承來源 DelegatingHandler)

方法

Dispose()

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

(繼承來源 HttpMessageHandler)
Dispose(Boolean)

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

(繼承來源 DelegatingHandler)
Equals(Object)

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

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

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

將 HTTP 要求傳送到內部處理常式以傳送到伺服器。

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

以非同步作業方式將 HTTP 要求傳送到內部處理常式,以傳送到伺服器。

SendCoreAsync(HttpRequestMessage, Context, CancellationToken)

Policy 的執行期間內呼叫,以執行要求處理。

ToString()

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

(繼承來源 Object)

適用於