PolicyHttpMessageHandler Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Una DelegatingHandler implementación que ejecuta el procesamiento de solicitudes rodeado por un 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
- Herencia
Comentarios
Esta implementación del controlador de mensajes admite el uso de directivas proporcionadas por la biblioteca polly para el control y la resistencia transitorios de errores.
La documentación que se proporciona aquí es una guía centrada para usar Polly junto con IHttpClientFactory. Para obtener información autoritativa sobre Polly, consulte el proyecto Polly y su documentación (https://github.com/app-vnext/Polly).
Los métodos de extensión en PollyHttpClientBuilderExtensions están diseñados como una manera cómoda y correcta de crear un PolicyHttpMessageHandler.
El AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) método admite la creación de un PolicyHttpMessageHandler para cualquier tipo de directiva. Esto incluye directivas no reactivas, como Timeout o Cache, que no requieren que se produzca un error primero en la solicitud subyacente.
PolicyHttpMessageHandler y los PollyHttpClientBuilderExtensions métodos de conveniencia solo aceptan el genérico IAsyncPolicy`1. Las instancias de directiva genéricas se pueden crear mediante los métodos genéricos en Policy , como TimeoutAsync``1(System.Int32).
Para adaptar un no genérico IAsyncPolicyexistente, use código como el siguiente que convierte un no genérico IAsyncPolicy policy en IAsyncPolicy`1:
policy.AsAsyncPolicy<HttpResponseMessage>()
El AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) método es un método de conveniencia con opinión que admite la aplicación de una directiva para las solicitudes que producen un error debido a un error de conexión o error de servidor (código de estado HTTP 5XX). Este tipo de método solo admite directivas reactivas, como Retry, Circuit-Breaker o Fallback. Este método solo se proporciona para mayor comodidad; se recomienda crear sus propias directivas según sea necesario si esto no cumple sus requisitos.
Tenga cuidado al usar directivas como Reintento o Tiempo de espera juntos, ya que HttpClient proporciona su propio tiempo de espera a través Timeoutde . Al combinar Retry y Timeout, Timeout actuará como un tiempo de espera en todos los intentos; una directiva de tiempo de espera de Polly se puede configurar después de una directiva de reintento en la secuencia de configuración, para proporcionar un tiempo de espera por intento.
Todas las directivas proporcionadas por Polly están diseñadas para ser eficaces cuando se usan de forma de larga duración. Ciertas directivas como Bulkhead y Circuit-Breaker mantener el estado y deben tener el ámbito en las llamadas que quiera compartir el estado Bulkhead o Circuit-Breaker. Tenga cuidado de garantizar las duraciones correctas al usar directivas y controladores de mensajes juntos en escenarios personalizados. Los métodos de extensión proporcionados por PollyHttpClientBuilderExtensions están diseñados para asignar una larga duración a las directivas y asegurarse de que se pueden usar cuando la característica de rotación del controlador está activa.
PolicyHttpMessageHandler adjunta un contexto al HttpRequestMessage objeto antes de ejecutar un Policy, si aún no existe uno. Context se proporciona a la directiva para su uso dentro de Policy y en otros controladores de mensajes.
Constructores
| Nombre | Description |
|---|---|
| PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>) |
Crea un nuevo PolicyHttpMessageHandlerobjeto . |
| PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>) |
Crea un nuevo PolicyHttpMessageHandlerobjeto . |
Métodos
| Nombre | Description |
|---|---|
| SendAsync(HttpRequestMessage, CancellationToken) |
Envía una solicitud HTTP al controlador interno para enviar al servidor como una operación asincrónica. |
| SendCoreAsync(HttpRequestMessage, Context, CancellationToken) |
Se llama dentro de la ejecución de para realizar el procesamiento de Policy solicitudes. |