Поделиться через


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 для любого типа политики. Сюда входят неактивные политики, такие как время ожидания или кэш, для которых не требуется сначала выполнить сбой базового запроса.

PolicyHttpMessageHandlerи PollyHttpClientBuilderExtensions удобные методы принимают только универсальный метод IAsyncPolicy`1 . Экземпляры универсальной политики можно создать с помощью универсальных методов, Policy таких как TimeoutAsync``1(System.Int32).

Чтобы адаптировать существующий неуниверсивный IAsyncPolicy, используйте следующий код:

policy.AsAsyncPolicy<HttpResponseMessage>()

Метод AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) — это удобный метод, поддерживающий применение политики для запросов, которые завершаются сбоем из-за сбоя подключения или ошибки сервера (код состояния HTTP 5XX). Этот тип метода поддерживает только реактивные политики, такие как повторные попытки, Circuit-Breaker или резервные. Этот метод предоставляется только для удобства; Мы рекомендуем создавать собственные политики по мере необходимости, если это не соответствует вашим требованиям.

При совместном использовании политик, таких как повторная попытка или время ожидания, следует учесть, так как HttpClient предоставляет собственное время ожидания через Timeout. При объединении повторных попыток и времени ожидания Timeout будет действовать как время ожидания для всех попыток. Политику времени ожидания опроса можно настроить после политики повторных попыток в последовательности конфигурации, чтобы обеспечить время ожидания за попытку.

Все политики, предоставляемые Polly, должны быть эффективными при длительном использовании. Некоторые политики, такие как "Переборка" и "Circuit-Breaker, поддерживают состояние и должны иметь область действия для вызовов, которые вы хотите совместно использовать состояние "Переборка" или "Circuit-Breaker". Обеспечьте правильное время существования при совместном использовании политик и обработчиков сообщений в пользовательских сценариях. Методы расширения, предоставляемые , PollyHttpClientBuilderExtensions предназначены для назначения политик длительного времени существования и обеспечения их использования при активной функции смены обработчика.

Прикрепляет PolicyHttpMessageHandler контекст к HttpRequestMessage до выполнения Policy, если он еще не существует. Будет Context предоставлен политике для использования внутри Policy и в других обработчиках сообщений.

Конструкторы

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

Создает новый экземпляр PolicyHttpMessageHandler.

PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>)

Создает новый экземпляр PolicyHttpMessageHandler.

Свойства

InnerHandler

Возвращает или задает внутренний обработчик, который обрабатывает сообщения HTTP-ответа.

(Унаследовано от DelegatingHandler)

Методы

Dispose()

Освобождает неуправляемые ресурсы и удаляет управляемые ресурсы, используемые объектом HttpMessageHandler.

(Унаследовано от HttpMessageHandler)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом DelegatingHandler, и при необходимости освобождает также управляемые ресурсы.

(Унаследовано от 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)

Применяется к