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 プロジェクトとそのドキュメント (https://github.com/app-vnext/Polly) を参照してください。
PollyHttpClientBuilderExtensionsの拡張メソッドは、PolicyHttpMessageHandlerを作成するための便利で正しい方法として設計されています。
AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) メソッドは、あらゆる種類のポリシーに対するPolicyHttpMessageHandlerの作成をサポートします。 これには、基になる要求が最初に失敗する必要がない、タイムアウトやキャッシュなどの非反応性ポリシーが含まれます。
PolicyHttpMessageHandler PollyHttpClientBuilderExtensions便利なメソッドは、ジェネリック IAsyncPolicy`1のみを受け入れます。 汎用ポリシー インスタンスは、TimeoutAsync``1(System.Int32)などのPolicyのジェネリック メソッドを使用して作成できます。
既存の非ジェネリック IAsyncPolicyを調整するには、非ジェネリック IAsyncPolicy policy を IAsyncPolicy`1に変換する次のようなコードを使用します。
policy.AsAsyncPolicy<HttpResponseMessage>()
AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>)メソッドは、接続エラーまたはサーバー エラー (5XX HTTP 状態コード) によって失敗した要求に対するポリシーの適用をサポートする便利な方法です。 この種のメソッドでは、再試行、サーキット ブレーカー、フォールバックなどのリアクティブ ポリシーのみがサポートされます。 このメソッドは便宜上のみ提供されます。要件を満たさない場合は、必要に応じて独自のポリシーを作成することをお勧めします。
HttpClient は Timeoutを介して独自のタイムアウトを提供します。再試行やタイムアウトなどのポリシーを一緒に使用する場合は注意してください。 再試行とタイムアウトを組み合わせると、 Timeout はすべての試行でタイムアウトとして機能します。構成シーケンスの再試行ポリシーの後に Polly Timeout ポリシーを構成して、再試行ごとのタイムアウトを提供できます。
Polly によって提供されるすべてのポリシーは、有効期間の長い方法で使用する場合に効率的に設計されています。 バルクヘッドや Circuit-Breaker などの特定のポリシーは状態を維持し、バルクヘッドまたは Circuit-Breaker 状態を共有する呼び出し間でスコープを設定する必要があります。 カスタム シナリオでポリシーとメッセージ ハンドラーを一緒に使用する場合は、正しい有効期間を確保するように注意してください。 PollyHttpClientBuilderExtensionsによって提供される拡張メソッドは、ポリシーに長い有効期間を割り当て、ハンドラーのローテーション機能がアクティブなときに使用できるように設計されています。
PolicyHttpMessageHandlerは、Policyを実行する前にコンテキストをHttpRequestMessageにアタッチします (まだ存在しない場合)。 Contextは、Policy内やその他のメッセージ ハンドラーで使用するためにポリシーに提供されます。
コンストラクター
メソッド
| 名前 | 説明 |
|---|---|
| SendAsync(HttpRequestMessage, CancellationToken) |
非同期操作としてサーバーに送信する HTTP 要求を内部ハンドラーに送信します。 |
| SendCoreAsync(HttpRequestMessage, Context, CancellationToken) |
要求処理を実行するために、 Policy の実行内で呼び出されます。 |