PolicyHttpMessageHandler 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一種 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
- 繼承
備註
此訊息處理程式實作支援使用 Polly 連結庫提供的原則,以進行暫時性錯誤處理和復原。
此處提供的檔著重於搭配 使用 Polly 與 的 IHttpClientFactory指引。 如需 Polly 的授權資訊,請參閱 Polly 專案 及其檔 。
上的 PollyHttpClientBuilderExtensions 擴充方法設計為方便且正確的方法來建立 PolicyHttpMessageHandler。
方法 AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) 支援為任何類型的原則建立 PolicyHttpMessageHandler 。 這包括非響應式原則,例如逾時或快取,不需要先失敗基礎要求。
PolicyHttpMessageHandler而 PollyHttpClientBuilderExtensions 便利的方法只接受泛型 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將內容附加至 HttpRequestMessage 。 Context將會提供給原則,以供在其他訊息處理程式中使用Policy。
建構函式
屬性
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) |