PolicyHttpMessageHandler Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Uma DelegatingHandler implementação que executa o processamento de solicitação cercado por um 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
- Herança
Comentários
Essa implementação do manipulador de mensagens dá suporte ao uso de políticas fornecidas pela biblioteca polly para manipulação de falhas transitórias e resiliência.
A documentação fornecida aqui é uma orientação focada para usar o Polly junto com o IHttpClientFactory. Para obter informações autoritativas sobre Polly, consulte o projeto Polly e sua documentação (https://github.com/app-vnext/Polly).
Os métodos de PollyHttpClientBuilderExtensions extensão são projetados como uma maneira conveniente e correta de criar um PolicyHttpMessageHandler.
O AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) método dá suporte à criação de um PolicyHttpMessageHandler para qualquer tipo de política. Isso inclui políticas não reativas, como Tempo limite ou Cache, que não exigem que a solicitação subjacente falhe primeiro.
PolicyHttpMessageHandler e os PollyHttpClientBuilderExtensions métodos de conveniência aceitam apenas o genérico IAsyncPolicy`1. Instâncias de política genéricas podem ser criadas usando os métodos genéricos, Policy como TimeoutAsync``1(System.Int32).
Para adaptar um código não genérico IAsyncPolicyexistente, use um código como o seguinte que converte um não genérico IAsyncPolicy policy em IAsyncPolicy`1:
policy.AsAsyncPolicy<HttpResponseMessage>()
O AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) método é um método de conveniência opinativo que dá suporte à aplicação de uma política para solicitações que falham devido a uma falha de conexão ou erro de servidor (código de status HTTP 5XX). Esse tipo de método dá suporte apenas a políticas reativas, como Repetição, Disjuntor ou Fallback. Esse método só é fornecido para conveniência; Recomendamos criar suas próprias políticas conforme necessário se isso não atender às suas necessidades.
Tome cuidado ao usar políticas como Repetição ou Tempo Limite juntos, pois HttpClient fornece seu próprio tempo limite por meio de Timeout. Ao combinar Repetição e Tempo Limite, Timeout atuará como um tempo limite em todas as tentativas; uma política de Tempo Limite de Pesquisa pode ser configurada após uma política de repetição na sequência de configuração, para fornecer um tempo limite por tentativa.
Todas as políticas fornecidas pela Polly são projetadas para serem eficientes quando usadas de forma de longa duração. Determinadas políticas, como o Bulkhead e o Circuit-Breaker, mantêm o estado e devem ser definidas entre chamadas que você deseja compartilhar o bulkhead ou Circuit-Breaker estado. Tome cuidado para garantir os tempos de vida corretos ao usar políticas e manipuladores de mensagens juntos em cenários personalizados. Os métodos de extensão fornecidos por PollyHttpClientBuilderExtensions eles são projetados para atribuir um longo tempo de vida às políticas e garantir que eles possam ser usados quando o recurso de rotação do manipulador estiver ativo.
O PolicyHttpMessageHandler anexa um contexto ao anterior à HttpRequestMessage execução de um Policy, caso ainda não exista. A Context política é fornecida para uso dentro e Policy em outros manipuladores de mensagens.
Construtores
| Nome | Description |
|---|---|
| PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>) |
Cria um novo PolicyHttpMessageHandler. |
| PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>) |
Cria um novo PolicyHttpMessageHandler. |
Métodos
| Nome | Description |
|---|---|
| SendAsync(HttpRequestMessage, CancellationToken) |
Envia uma solicitação HTTP para o manipulador interno para enviar ao servidor como uma operação assíncrona. |
| SendCoreAsync(HttpRequestMessage, Context, CancellationToken) |
Chamado dentro da execução do processamento da Policy solicitação. |