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
- Наследование
Комментарии
Эта реализация обработчика сообщений поддерживает использование политик, предоставляемых библиотекой Polly для обработки временных сбоев и устойчивости.
В документации, приведенной здесь, приведены рекомендации по использованию Polly вместе с ним IHttpClientFactory. Достоверную информацию о Polly см. в проекте Polly и его документации (https://github.com/app-vnext/Polly).
Методы PollyHttpClientBuilderExtensions расширения разработаны как удобный и правильный способ создания PolicyHttpMessageHandler.
Этот AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) метод поддерживает создание любой PolicyHttpMessageHandler политики. К ним относятся неактивные политики, такие как время ожидания или кэш, которые не требуют отработки отказа базового запроса.
PolicyHttpMessageHandler и удобные PollyHttpClientBuilderExtensions методы принимают только универсальные IAsyncPolicy`1. Универсальные экземпляры политик можно создавать с помощью универсальных методов Policy , например TimeoutAsync``1(System.Int32).
Чтобы адаптировать существующий не универсальный код, используйте следующий код, который преобразует не универсальный IAsyncPolicyIAsyncPolicy policyIAsyncPolicy`1в:
policy.AsAsyncPolicy<HttpResponseMessage>()
Этот AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) метод — это удобный метод, поддерживающий применение политики для запросов, которые завершаются сбоем подключения или ошибкой сервера (код состояния HTTP 5XX). Этот тип метода поддерживает только реактивные политики, такие как повторная попытка, разбиение канала или резервный вариант. Этот метод предоставляется только для удобства; Рекомендуется создавать собственные политики по мере необходимости, если это не соответствует вашим требованиям.
Обратите внимание на использование политик, таких как повторная попытка или время ожидания вместе, так как HttpClient предоставляет собственное время ожидания через Timeout. При объединении повторных попыток и времени ожидания Timeout будет выступать в качестве времени ожидания во всех попытках; политика времени ожидания опроса может быть настроена после политики повторных попыток в последовательности конфигурации, чтобы предоставить время ожидания для каждой попытки.
Все политики, предоставляемые Polly, предназначены для эффективного использования в долгосрочной перспективе. Некоторые политики, такие как переборка и Circuit-Breaker поддерживают состояние и должны быть ограничены между вызовами, которым требуется предоставить общий доступ к состоянию bulkhead или Circuit-Breaker. Необходимо обеспечить правильное время существования при использовании политик и обработчиков сообщений вместе в пользовательских сценариях. Методы расширения, предоставляемые службой PollyHttpClientBuilderExtensions , предназначены для назначения длительного времени существования политикам и обеспечения их использования при активной функции поворота обработчика.
Он PolicyHttpMessageHandler присоединяет контекст к HttpRequestMessage предыдущему выполнению Policy, если он еще не существует. Эта Context политика предоставляется для использования внутри Policy и в других обработчиках сообщений.
Конструкторы
| Имя | Описание |
|---|---|
| PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>) |
Создает новый PolicyHttpMessageHandlerобъект. |
| PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>) |
Создает новый PolicyHttpMessageHandlerобъект. |
Методы
| Имя | Описание |
|---|---|
| SendAsync(HttpRequestMessage, CancellationToken) |
Отправляет HTTP-запрос внутреннему обработчику для отправки на сервер в виде асинхронной операции. |
| SendCoreAsync(HttpRequestMessage, Context, CancellationToken) |
Вызывается внутри выполнения Policy выполнения запроса. |